問題タブ [multi-release-jar]
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 - 依存関係を含むプロジェクトのマルチリリース jar のビルド
外部依存関係を含む Maven プロジェクト用のマルチリリース jar をビルドしようとしています。「外部依存関係」を強調する理由は、こちらの指示に従ってマルチリリース jar のビルドに成功したためです: http://in.relation.to/2017/02/13/building-multi-release-jars-with -maven/ pom に外部依存関係がないプロジェクトの場合。このプロジェクトを pom に依存するように変更すると、「パッケージが存在しません」というエラーが表示されました。報告されたパッケージは、含まれている依存関係に存在します。これはプロジェクト構造です:
Pom.xml:
src/main/java9/org/hibernate/demos/mrjar/ProcessIdProvider.java:
エラー:
このエラーは、フォルダー src/main/java9 内に存在するクラスに対してのみ表示され、src/main/java 内のファイルは正常にコンパイルされます。マルチリリースjarを構築する依存関係を持つサンプルmavenプロジェクトが見つからないようです。
java - マルチリリース JAR からの正しくないクラスファイルを使用する AWS Lambda?
Java8で数年間ラムダを実行していましたが、Java 11に更新したばかりです。すぐに壊れて、次のようなエラーが発生しました。
問題のクラスは特にエキサイティングではなく、私のクラスで一般的な単純な静的初期化があります。
以前、(Lambda 以外の) Java サーバーを 8 から 11 に切り替えたときに、このような問題を見たことがあります。Multi-Release: true
私が依存している ApacheLog4j アーティファクトはorg.apache.logging.log4j.util.StackLocator
、Java 8 および 9+ でクラスの代替実装を提供するため、jar のマニフェストに としてフラグを付ける必要がありました。ただし、JVM が適切なバージョンのクラスを取得することを期待しています。どこかに設定しなければならない設定はありますか?Lambda を Java 8 から Java 11 に切り替えると、どこかで何かが混乱する可能性はありますか?
jar/META-INF/versions:
編集: AWS Lambda が JAR を抽出するときに、JAR が Muli-Release JAR であることを JVM に伝える MANIFEST.MF ファイルを含む META-INF ディレクトリを抽出しないことを示すいくつかの参照を見つけています。Lambda はマルチリリース JAR をまったくサポートしていますか?
java - jar はマルチリリースの jar ファイルではありませんが、 --multi-release オプションが設定されています
mvn package
ルートディレクトリで実行すると、次のエラーが発生します-
これは私の pom.xml です -