web-dev-qa-db-ja.com

Java9モジュールでサードパーティライブラリを使用する方法

Java9モジュールではないサードパーティのライブラリを使用するJava9モジュールがいくつかあります。これは単純なユーティリティjarです。

しかし、コンパイラーは、私のユーティリティーからパッケージを見つけることができないと不平を言います。

サードパーティのライブラリを使用できるようにするには、module-info.Javaで何をすればよいですか?

15
igr

ライブラリを自動モジュールとして使用できます。自動モジュールは、モジュール記述子を持たないモジュールです(つまり、module-info.class)。しかし、このモジュールを参照するにはどのような名前を使用する必要がありますか?自動モジュールの名前は、JAR名から派生します(このJARにAutomatic-Module-Name属性が含まれている場合を除く)。完全なルールは非常に長いため(ModuleFinder.ofについてはJavadocを参照)、簡単にするために、バージョンから名前を削除し、英数字以外のすべての文字をドット(.)に置き換える必要があります。

たとえば、foo-bar-1.2.3-SNAPSHOT.jarを使用する場合は、module-info.Javaに次の行を追加する必要があります。

module <name> {
    requires foo.bar;
}
16
ZhekaKozlov

簡単な手順で、サードパーティのjarを使用します(例:log4j-api-2.9.1.jar以下)モジュールで:

  1. jar ツールの記述子コマンドを実行します

    jar --file=/path/to/your/jar/log4j-api-2.9.1.jar --describe-module
    

    これにより、次のような出力が得られます。

    モジュール記述子が見つかりません。派生自動モジュール.

    log4j.api@2.9.1自動

  2. あなたのmodule-info.Java、そのモジュール名にrequiresを次のように宣言します:-

    module your.module {
        requires log4j.api;
    }
    

    それでおしまい。

8
Naman