私のアプリは何らかのプロセス(control-m)によって開始されます。これは、変更可能なbashスクリプトから開始されます(スクリプトは他のプロセスによって呼び出されます)。
アプリは間違ったバージョンの春で実行されています。問題は、どのjarがロードされているかはわかっていますが、クラスパスにはありません。クラスパスはbashスクリプトで提供されます。また、以下を実行して検証しました。
ClassLoader cl = ClassLoader.getSystemClassLoader();
java.net.URL[] urls = ((URLClassLoader)cl).getURLs();
for(java.net.URL url: urls){
System.out.println(url.getFile());
}
しかし、それでもいくつかの瓶は、あるべきではないものがあります。コマンドラインに-verbose:classがあります。必要なクラスが無効なjarファイルからロードされる理由をどのように知ることができますか?なぜこれらのジャードがロードされているのですか?クラスローディングプロセスをデバッグする方法は?
ユーザーアカウントから(他のプロセスではなく)スクリプトを実行すると、すべて問題ありません。