14

私は 2 つの小さなプロジェクトde.app1de.app2を作成しました。ここで、Appfrom de.app1Testfrom de.app2を使用します。

├── de.app1
│   ├── de
│   │   └── app
│   │       └── App.java
│   └── module-info.java
└── de.app2
    └── de
        └── test
            └── Test.java

最初のプロジェクトのmodule-info.javaには、module de.app1 {}

2 番目のプロジェクトをコンパイルし、jar ファイルを作成しました。

javac de/test/Test.java
jar cf app2.jar de/test/Test.class

そして、次のように最初のプロジェクトをコンパイルしようとしました:

javac -cp ../de.app2/app2.jar de/app/App.java module-info.java

Test見つからなかったため失敗しました。module-info.javaなしでプロジェクトをコンパイルすると、すべてが通常どおり機能します。

Java 9モジュール内でJava 9モジュールではないjarからクラスを使用することは何とか可能ですか? 特にサードパーティのプロジェクト (apache-commons など) に依存するプロジェクトでは、このようなものが必要になると思います。

4

1 に答える 1

15

はい、可能です。あなたが探しているのは自動モジュールです。

作成するには、通常の JAR を、モジュール パスで指定したフォルダー(たとえばguava-19.0.jar、フォルダー内libs-私のサンプル プロジェクトを参照)に入れるだけです。これは、そこからモジュールを作成するように JVM に指示します。このモジュールは、ファイル名 (この場合は ) に基づいて名前を取得し、guava他のすべてのモジュールを読み取り、そのパッケージをすべてエクスポートします。

その後、与えられた名前でそれを要求できます (例require guava;-ここを参照してください)。

于 2016-07-08T19:57:46.617 に答える