問題タブ [module-info]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
863 参照

java - Maven および Java 9+ で Java 自動モジュール cdi.api を使用する

Java モジュールで CDI 機能を使用したいと考えています。コードを汎用的なままにして、特定の実装に依存しないようにしたいと考えています。

Java 11 と Maven 3.6.0 を使用しています。

javax.enterprise.context簡単にするために、私の目標はJavaファイルにパッケージをインポートすることです。モジュールなしで(なしで)そうすると、module-info.javaすべてがうまく機能します。

module-info.java他のモジュールを必要とせずに を追加すると、次のエラー メッセージが表示されます。
package javax.enterprise.context is not visible (package javax.enterprise.context is declared in the unnamed module, but module javax.enterprise.context does not read it)

今まではすべて問題ありません。私は CDI モジュールを必要としなかったので、このメッセージは理にかなっています。

これを修正するには、に追加requires cdi.api;module-info.javaますが、次のエラーが発生するだけです。
module not found: cdi.api

私の理解では、CDI ライブラリは、jar ファイルの名前に触発された自動モジュール名を使用する必要があります。-Xディレクティブを使用してmavenを実行するとcdi-api-2.0.jar、クラスパスに表示されます。私が間違っている場合は修正してください。これはcdi.api自動モジュール名に変換されるはずです。しかし、それでもうまくいきません。

これが私の最小限の例です:

pom.xml:

src/main/java/module-info.java:

src/main/java/com/acme/Main.java

どんな洞察も高く評価されます。