首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包com.fasterxml.jackson.annotation不可见

包com.fasterxml.jackson.annotation不可见
EN

Stack Overflow用户
提问于 2018-06-18 14:42:19
回答 1查看 6.8K关注 0票数 4

当我在Java 9中编译我的Spring应用程序时,它在以下几条消息之后失败:

代码语言:javascript
复制
package com.fasterxml.jackson.annotation is not visible
    (package com.fasterxml.jackson.annotation is declared in the unnamed module, but module com.fasterxml.jackson.annotation does not read it)

有人能告诉我这是怎么回事吗?据我所知,任何未在Java-9模块中的预Java 9代码都将是未命名模块的一部分,其中任何内容都是公开的。

在我的模块中,我使用它作为一个注释:

代码语言:javascript
复制
@JsonIgnore
public Week getNextWeek()
{
    Calendar instance = this.getFirstDay();
    instance.set(Calendar.WEEK_OF_YEAR, this.week + 1);
    return new Week(instance);
}

因此,如果com.fasterxml.jackson.annotation包是这样的,那么为什么引用具有该名称的模块时出错,以及为什么它不读取它是一个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-18 16:46:01

引用JigSaw规范的话

未命名模块导出其所有包。这使我们能够灵活迁移,我们将在下文中看到这一点。--然而,它并不意味着命名模块中的代码可以访问未命名模块中的类型,而命名模块实际上甚至不能声明对未命名模块的依赖。

你要找的是自动模块。在自动模块中,可以将jar放在模块路径上,并从jar本身自动派生模块名称。如果您使用的是Maven,那么应该是artifactId

因此,如果您在maven中使用jackson-annotations,如下所示:

代码语言:javascript
复制
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.0.0</version>
</dependency>

您仍然需要在module-info.java中定义它

代码语言:javascript
复制
module example {
    requires jackson.annotations;
}

在此之后,您可以自由地在模块中使用注释。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50912017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档