問題タブ [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.
java - Java 9 で自動生成されたモジュール名のモジュール記述子を取得できませんか?
私のプロジェクトは Netty Epoll トランスポートに依存しています。依存関係は次のとおりです。
この依存関係の自動生成されたモジュール名は次のとおりです。
またnative
、Java 9 ではキーワードが予約されているため、このモジュールを依存関係としてプロジェクトに追加することはできません。
のため:
さらに、jar ツール--describe-module
は次のように報告します。
次のモジュール記述子を取得できません: netty-transport-native-epoll-4.1.17.Final-SNAPSHOT-linux-x86_64.jar netty.transport.native.epoll: 無効なモジュール名: 'native' は Java 識別子ではありません
回避策はありますか? (もちろん、「正しいnettyアーティファクトをリリースする」を除く)。
編集:
メンテナー向けの簡単な修正として、次の行をビルドに追加できます。
java - SPI + JDK 9 + module-info.java
JDK 9 で SPI を試しています。例全体は、「module-info.java」がなくても JDK 9 で動作します。「module-info.java」を追加した後、ServiceLocator は実装クラスを見つけられません。私は混乱しており、モジュール化された JDK 9 プロジェクトで動作する SPI の例を見つけることができません。
したがって、私のサンプル プロジェクトは次のようになります。
インターフェイスを導入しました:
このインターフェースは、以下によって実装されます。
実装は、次のようなコードで検索されます。
そして今が楽しい部分です。以下のクラスを実行していない場合:
- /implementationB/src/main/java/module-info.java
- /applicationB/src/main/java/module-info.java
次に、実装クラスが見つかり、テキストが出力されます。
この 2 つの「module-info.java」ファイルを導入した後、実装クラスは ServiceLocator によって検出されません。/applicationB/src/main/java/module-info.java の内容:
/implementationB/src/main/java/module-info.java の内容:
コメントを外すと:
行の場合、コンパイル エラーが発生します。
コンパイル エラーの候補としてパッケージ名を変更しようとしましたが、「分割パッケージ」の問題が発生しました。
完全にモジュール化された JDK 9 で ServiceLocator を使用するにはどうすればよいですか? 出来ますか?誰も実際の例を見たことがありますか? コードはここでも見ることができます: https://github.com/RadoslawOsinski/spidemo
java - Maven の依存関係から Java 9 の依存関係を構築する方法
Java9 は、OSGI や Maven の依存関係に似た強力なモジュール性を導入しています。
Mavenの依存関係を検査するJava 9の依存関係を構築できるMavenプラグインはありますか?
たとえば、
に
この記事を読みましたが、あまり役に立ちません - Java 9 への移行のために Java ee 機能に対する依存関係を maven で表現する方法は?