2017-02-26 114 views
0

我试图在使用JavaMail API的命令行上运行程序。该程序还读取来自文本文件的消息。不过,我得到这个错误:使用jar和文本文件输入运行java文件

Error: A JNI error has occurred, please check your installation and try again 
Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Address 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048) 
    at java.lang.Class.getMethod0(Class.java:3018) 
    at java.lang.Class.getMethod(Class.java:1784) 
    at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) 
Caused by: java.lang.ClassNotFoundException: javax.mail.Address 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 7 more 

原来我用java命令/path/to/mail.jar mailTest < message.txt

我配置成功的jar classpath中(远我所知)。任何人都可以给我一些指点吗? :/

回答

0

其实,如果你看一下错误信息:

Caused by: java.lang.ClassNotFoundException: javax.mail.Address 

这可能是因为你的罐子依赖于另一个罐子(可能是邮件的xyzjar),并尝试当你没有包括在classpath运行你的jar。

无论是在命令行上缺少的罐子(S),见this post,或将它们添加到您的清单文件,请参阅the doc

+0

我已检查过,并且看起来没有另一个依赖关系。现在看来,我的类路径似乎是错误的,但感谢您的帮助!对此,我真的非常感激! –

+0

你在正确的道路上,你从类路径中缺少这个jar,正如我在文章中提到的那样,你有两种直接处理方式:创建清单文件或在命令行中包含依赖项。 – Adonis

+0

对不起,这可能是一个愚蠢的问题,但我检查了我的javax.mail.jar和Address类在那里。我试图寻找另一个jar依赖项,但我找不到任何东西,所以我认为jar无法找到,因为我的类路径是错误的。那么我怎么才能找到这个缺少的jar?当我尝试查找“javax.mail.Address”时,我的搜索将我指向了手头的原始jar。 –

1

CLASSPATH中肯定是不对的。类路径需要包含javax.mail.jar文件和应用程序的类。 JavaMail jar文件的确切位置,应用程序类的确切位置,以及您使用的命令行是什么?如果您的应用程序类在当前目录中,您需要类似于

java -cp /path/to/javax.mail.jar:. mailTest 
+0

我已经将jar文件放入与其他应用程序类相同的目录中。我使用的确切的java命令是:java -cp。:/ path/to/javax.mail.jar mail.mailTest

+0

我也同意我的类路径可能是错误的:( –

+0

请记住, Windows,在-cp之后的分隔符是分号“;”,所以你应该有java -cp。;/path/to/javax.mail.jar mail.mailTest – Adonis