当我在Java 9中编译我的Spring应用程序时,它在以下几条消息之后失败:
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代码都将是未命名模块的一部分,其中任何内容都是公开的。
在我的模块中,我使用它作为一个注释:
@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包是这样的,那么为什么引用具有该名称的模块时出错,以及为什么它不读取它是一个问题?
发布于 2018-06-18 16:46:01
引用JigSaw规范的话
未命名模块导出其所有包。这使我们能够灵活迁移,我们将在下文中看到这一点。--然而,它并不意味着命名模块中的代码可以访问未命名模块中的类型,而命名模块实际上甚至不能声明对未命名模块的依赖。
你要找的是自动模块。在自动模块中,可以将jar放在模块路径上,并从jar本身自动派生模块名称。如果您使用的是Maven,那么应该是artifactId。
因此,如果您在maven中使用jackson-annotations,如下所示:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.0.0</version>
</dependency>您仍然需要在module-info.java中定义它
module example {
requires jackson.annotations;
}在此之后,您可以自由地在模块中使用注释。
https://stackoverflow.com/questions/50912017
复制相似问题