Swing デスクトップ アプリケーションを作成しています。以下を使用してプログラムをコンパイルします。
C:\MyJavaPrograms\src>"C:\Program Files\Java\jdk1.7.0_04\bin\javac" SVNTool.java -cp ".;C:\parsers\commons\commons-lang-2.4.jar;C: \parsers\svnkit-1.7.4-v1\lib\svnkit-cli-1.7.4-v1.jar;C:\parsers\svnkit-1.7.4-v1\lib\svnkit-1.7.4-v1.jar"
そして、次を使用してプログラムを呼び出します。
C:\MyJavaPrograms\src>"C:\Program Files\Java\jdk1.7.0_04\bin\java" SVNTool -cp ".;C:\parsers\commons\commons-lang-2.4.jar;C:\parsers \svnkit-1.7.4-v1\lib\svnkit-cli-1.7.4-v1.jar;C:\parsers\svnkit-1.7.4-v1\lib\svnkit-1.7.4-v1.jar"
それはうまくコンパイルされます。それはうまく始まります。しかし、ボタンをクリックすると、SwingWorker スレッドが作成されますが、このスレッドは NoClassDefFoundError で失敗しました。
私はネットを検索し、次を使用してCLASSPATH環境変数にいくつかのjarファイルを追加することで問題を回避できました。
C:\MyJavaPrograms\src>set CLASSPATH=%CLASSPATH%;C:\parsers\svnkit-1.7.4-v1\lib\svnkit-1.7.4-v1.jar;C:\parsers\svnkit-1.7.4- v1\lib\svnkit-cli-1.7.4-v1.jar;C:\parsers\commons\commons-lang-2.4.jar
では、マルチスレッド Swing アプリケーションでコンパイル時と実行時のクラスパスが一致しない原因は何でしょうか? すべての環境変数とコマンドライン オプションをスレッドで使用できるようにする方法はありますか?