実行可能なjarファイルで発生した奇妙な問題を理解しようとしています.xyz.jarにはマニフェストファイルにクラスパスがあり、abc.jarライブラリに依存しています。
残念ながら、xyz.jar のマニフェスト クラスパスは正しくありません。災害から救うために、使用する実行コマンドを更新しています: java -classpath path/abc.jar:etc の代わりに java -jar
問題は、abc.jar がクラスパスにない場合を除き、xyz.jar の誤動作です。abc.jar が削除されると、プログラムは正しく実行され、例外はスローされません。なんで?xyz.jar は、別の場所から abc.jar を取得している必要があります。xyz.jar は abc.jar のメソッドを呼び出します。
-classpath は、すべての $CLASSPATH 設定をオーバーライドする必要があります。-classpath を使用している場合でも、Java がまだマニフェスト クラスパスを参照している可能性はありますか?