2

Netbeans で電子メール SSL 電子メールを送信しようとしています。プロジェクトに と の両方を追加しましjavaee.jarmail.jarが、次のエラーが表示されます。

Exception in thread "main" java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/mail/MessagingException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at GUI.CompilerForm.<init>(CompilerForm.java:43)
at Compiler.Main.main(Main.java:19)

調査の結果、コードを Java EE コンテナー内で実行する必要があることがわかりましたが、これについては経験がありません。私はこれをオンラインで調べましたが、ほとんど成功せず、Java EE コンテナーについてしか知りませんでした。

では、コードを Java EE コンテナーに追加し、それをプロジェクトで使用するにはどうすればよいでしょうか?

4

1 に答える 1

6

JavaEEコンテナをJavaプロジェクトに追加する方法

いいえ、しないでください。あなたの唯一の意図は、Java EE(Web)アプリケーションではなく、Java SE(デスクトップ)アプリケーションを実行しているようです。JavaSEアプリケーションをJavaEEアプリケーションとして実行しないでください。

間違った解決策を達成する方法を尋ねるのではなく、直面している具体的な問題に対する正しい解決策を見つける必要があります。

具体的な問題については、

スレッド"main"の例外java.lang.ClassFormatError:クラスファイルjavax / mail/MessagingExceptionでネイティブまたは抽象ではないメソッドにコード属性がありません

これは基本的javax/mail/MessagingExceptionに、現在のランタイムクラスパスで言及されているクラス()にはクラスとメソッドのシグネチャのみが含まれ、具体的なコードはまったく含まれていないことを意味します。つまり、現在のランタイムクラスパスで言及されているクラスはです。実際、そこにあるもの(コンパイル/インポートの問題を解決するために間違った試みでダウンロードしたようです)には、基本的に、具体的な実装コードのないjavaee.jar抽象的なJavaEEAPIが含まれています。

これは正しくないです。そのファイルを完全に削除します。javaee.jarJavaMailのWebサイトmail.jarからダウンロードできるもので十分です。具体的な問題は、API含む(ただし実装は含まない)ファイルが、具体的な実装を含むファイルよりもクラスローディングで優先されるために発生します。このファイルは、Java EEプロジェクトのコンパイル時の依存関係としてのみ使用する必要があり、JavaSEプロジェクトの実行時の依存関係としては使用しないでください。javaee.jarjavax.mailmail.jarjavax.mailjavaee.jar

于 2012-08-28T16:35:42.633 に答える