2014-09-26 83 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

相關問題