2014-09-26 60 views
1

我在Windows中的Eclipse中构建了一个Java程序,它运行良好。该计划包括5个Java类和5个jar库文件。Java无法在Linux中的.jar文件中找到类

然后,我将所有* .java文件和* .jar文件复制到Linux。编译并运行它后,我得到一个异常,找不到htmlparser.jar类PaserException。

Exception in thread "main" java.lang.NoClassDefFoundError: org/htmlparser/util/ParserException 
Caused by: java.lang.ClassNotFoundException: org.htmlparser.util.ParserException 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:323) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:268) 

我刚开始学习Linux,所以我不知道我是否编译并正确运行它。

我所有的文件(* .java和* .jar)都在同一个目录下,我的操作在这个目录下。

要编译:

javac -cp ./htmlparser.jar:./filterbuilder.jar:./sitecapturer.jar:./thumbelina.jar:./htmllexer.jar *.java 

要运行:(主要方法是在履带类,主要的方法需要在租赁1参数)

java -cp ./htmlparser.jar:./filterbuilder.jar:./sitecapturer.jar:./thumbelina.jar:./htmllexer.jar Crawler arg0 arg1 

然后我上面的异常。我编译并正确运行了吗?为什么我得到这个异常?谢谢。

+0

您指定的java命令不能正确。 -cp需要先行。你指定它的方式,-cp和它后面的所有内容都是Crawler主要方法的参数。这虽然会产生不同的错误信息,即找不到Crawler类。 – 2014-09-26 21:56:35

+0

正如你所说,如果我把-cp放在第一位,但是我得到了Crawler的异常: 线程“main”中的异常java.lang.NoClassDefFoundError:Crawler 引起:java.lang.ClassNotFoundException:Crawler – Serene 2014-09-26 22:01:22

+0

所以你可以请教我正确的方式来运行它? – Serene 2014-09-26 22:04:14

回答

2

保存类文件(.)的文件夹不在类路径中。将另一个:.添加到类路径中:

java -cp ./htmlparser.jar:./filterbuilder.jar:./sitecapturer.jar:./thumbelina.jar:./htmllexer.jar:. Crawler arg0 arg1 
+0

它的工作原理!非常感谢! – Serene 2014-09-26 22:15:01

相关问题