JMS に関連する特定の Java コードを実行すると、エラーが発生します。私はこれを理解しようとして2日間髪を引っ張ってきました.
私が得ている例外は "java.lang.NoClassDefFoundError: javax/jms/Message" です
java.lang.NoClassDefFoundError: javax/jms/Message
at Asci.ActiveBatch.JMSAgent.JMSManager.createMsg(JMSManager.java:195)
at Asci.ActiveBatch.JMSAgent.JMSService.SendMessageHandler(JMSService.java:160)
あまり詳しく説明しませんが、これは次の行を指しています。
public static void createMsg(String icf, String url, String cf, String QName, String msgText, String[] props, String user, String pass) throws Exception {
JMSProducer.produceMsg(icf, url, cf, QName, msgText, props, user, pass);
}
(なぜその関数が基本的に別の関数にマッピングされているのかを尋ねないでください...私はもともとこのコードを書いていません)
私はこのコードを次のように呼んでいます
java -jar /path/myjarfile.jar
javax.jms.jar はその jar のマニフェストに含まれています (そしてその場所に存在します) が、次のように lib フォルダー (もちろん javax.jms.jar を含む) へのクラスパスを含めてみました。 :
java -classpath /path/lib:. -jar /path/myjarfile.jar
今まで運がなかった。何をすべきか、この問題をデバッグする方法がわかりません。どんな助けでも大歓迎です。明らかに、このコードはコンパイルされるため、これらのクラスは (少なくとも) コンパイル時に使用可能でなければなりません。
ありがとう。
編集:
1) java -classpath /path/lib/javax.jms.jar: も試しました。-jar /パス/myjarfile.jar
2) この問題は、コンパイル時ではなく実行時に発生します。
3) したがって、同じ jar ファイルで同じメソッドを呼び出す他のコードが動作します。特定の jar からこのコードを呼び出すときに、正しく噛み合わないものがあります。他のコードをチェックして再チェックして、それが同一であることを確認したため(以前と同じ)、コードの問題のようには見えません。めちゃくちゃな参照か何かがどこかにあるようです。