Spring BootアプリケーションをJava 9でコンパイルすると、次のようなメッセージがいくつか表示されて失敗します。
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からの引用:
名前のないモジュールは、すべてのパッケージをエクスポートします。これにより、以下に示すように、柔軟な移行が可能になります。ただし、名前付きモジュールのコードが名前なしモジュールの型にアクセスできるという意味ではありません。名前付きモジュールは、実際には名前なしモジュールへの依存を宣言することさえできません。
あなたが探しているのは自動モジュールです。自動モジュールではjar
、モジュールパスに配置でき、jar
それ自体からモジュール名を自動的に取得します。Mavenを使用している場合は、それがですartifactId
。
そのため、jackson-annotations
次のようにmavenで使用している場合:
<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;
}
その後、モジュール内で注釈を自由に使用できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加