私はここに本当のヘッドスクラッチャーを持っています。私はすべてを試し、どこでも検索しました。それは私がそのテストJARを継承したアプリケーションから来ています。
(これは、GUIフロントと実際のチェックを行うコマンドラインアプリケーションで構成されています。GUIは、それ自体で新しいJVMを起動することによってコマンドラインアプリを実行します[java -cp"itself.jar"com.different.mainClass]。それは悪いデザインです、私は知っていますが、関連があるかもしれません。)
とにかく、このプログラムには、2つのforループ内にネストされたいくつかのリフレクション呼び出しが含まれています。問題は、アプリケーションがJARアップされると、最初のリフレクション呼び出しが反復ごとに正確に1秒かかることです。ただし、クラスから実行する場合は、数ミリ秒かかります。
実際には、これは次のコマンドを意味します。
java -jar myjar.jar
数時間かかります。
このコマンド:
java -cp "...[bunch of jars];myjar.jar" com.myclasses.main
数分かかります。
テストされるJARは常にjarです。違いはテストアプリケーションのみです。
追求するアイデアや手段は大歓迎です。ありがとうございました!