2009-09-04 6 views
1

私は、javamail 1.4.2 apiおよびjdk/jre 1.6.0u16で異常なエラーが発生しました。以下の%classpath%のように、解凍したjavamail-1.4.2フォルダ(MySQL Connector-J 5.1.7も必要です)をjdkとjreフォルダの両方に配置しました。JavaMail ClassNotFound

.;"C:\Program Files\Java\jdk1.6.0-16\jre\lib\ext\mysql-connector-java-5.1.7-bin";"C:\Program Files\Java\jdk1.6.0-16\jre\lib\ext\javamail-1.4.2\mail.jar";"C:\Program Files\Java\jdk1.6.0_16\bin";"C:\Program Files\GameLabInventory\GameLabInventory-7.0.jar";"C:\Program Files\Java\jre6\lib\ext\mysql-connector-java-5.1.7-bin";"C:\Program Files\Java\jre6\lib\ext\javamail-1.4.2\mail.jar";

しかし、私はコマンドを使用して、私のコンパイル瓶

C:\Program Files\Java\jre6\bin>java -cp %classpath% -jar "C:\Program Files\GameLabInventory\GameLabInventory_7.0.jar" 

を実行したときに、私は次のようなエラーメッセージが出ます:私はここに私のセットアップに何かを見つけることができません

Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/MessagingException at gamelab.inventory.GameLabInventory.main(GameLabInventory.java:62) Caused by: java.lang.ClassNotFoundException: javax.mail.MessagingException at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) ... 1 more

を、うまくいけば皆さんが私を助けてくれるはずです。ありがとう!

Manifest-Version: 1.0 
Main-Class: gamelab.inventory.GameLabInventory 

Here is the jar -tvf (link)

答えて

1

java toolのドキュメントによると:

When you use [the -jar] option, the JAR file is the source of all user classes, and other user class path settings are ignored.

あなたは「その[あなた]のアプリケーションや拡張ニーズエクステンションやライブラリの相対URLを指定しています。」というごJAR fileClass-Path attributeを指定することができます

+0

私はこれを試してみるでしょうが、どのようにパスを入れるべきですか?2つのjarファイルをメインプログラムのjarファイルに追加し、パスなしで追加しますか?あるいは、jarファイルの外にある相対パスでそれを行う方法がありますか? –

+0

一連の手を加えた後、指定されたクラスパスが最終的に解決策になりました。 –

1

-jar使用して、Javaはクラスパスの設定(-cp)をオーバーライド:

ここマニフェストファイルです。ただし、この構成では、jarのマニフェストファイルでクラスパスjarを指定できます。

+0

私はこれを試してみますが、どのようにパスを入れるべきですか? 2つのjarファイルをメインプログラムのjarファイルに追加し、パスなしで追加しますか?あるいは、jarファイルの外にある相対パスでそれを行う方法がありますか? –

+0

jarファイルへの相対パスを追加するだけです。実際には、なぜJDKの家のextのサブディレクトリにこれらのjarファイルを入れているのですか?それは本当に変な場所ですjarファイルをlib/extに置くだけで、それらは自動的にピックアップされます。 – jsight

0

私は(私は春に関連しているので、あなたと同じではない)、同様の問題を経験し、このリンクは参考になりました見つけた:

http://forum.springsource.org/showthread.php?t=65840&page=3

JDKでの実装の変更があるかもしれないと思われますこの現象が発生します。

"Java 6(1.6.0_07)を使用してMac開発ボックスで問題を再現することができましたが、Java 5を使用してMacで試用しましたが、問題を再現できませんでした。 Java 5の場合、JVMはjavax.activation APIと1.1.1 javax起動バンドルの実装を使用しますが、Java 6の場合はJREのものを使用します(JREの一部が優先されます) dm Serverのlibディレクトリにあるもの)。今回はJava 6 1.6.0_10を使ってUbuntuボックスでアプリを試しましたが、問題を再現できませんでした。

および/しかし: -

は、 『MIMEタイプのためのオブジェクトDCH「私はこの同じ問題を抱えていました『』しかし、UbuntuのJavaバージョンの』 1.6.0_13だから私はどのようにあなたたちを知りません。 1.6.0_11にアップグレードして解決しました。 mailcab.defaultを自分のバンドルにコピーしていましたが、これはうまくいっていますが、私がまだ完全に理解していないクラスローディングの問題と思われます。