包 com.fasterxml.jackson.annotation 不可见
package com.fasterxml.jackson.annotation is not visible
当我在 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 包是这种情况,为什么错误指的是具有该名称的模块,为什么它不读取它是一个问题?
引自JigSaw Spec:
The unnamed module exports all of its packages. This enables flexible migration, as we shall see below. It does not, however, mean that code in a named module can access types in the unnamed module. A named module cannot, in fact, even declare a dependence upon the unnamed module.
您要找的是 Automatic Modules。在自动模块中,可以将 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;
}
之后,您可以自由使用模块中的注释。
当我在 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 包是这种情况,为什么错误指的是具有该名称的模块,为什么它不读取它是一个问题?
引自JigSaw Spec:
The unnamed module exports all of its packages. This enables flexible migration, as we shall see below. It does not, however, mean that code in a named module can access types in the unnamed module. A named module cannot, in fact, even declare a dependence upon the unnamed module.
您要找的是 Automatic Modules。在自动模块中,可以将 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;
}
之后,您可以自由使用模块中的注释。