[英]Java Classpath Problems
我已經編譯了,現在我正嘗試在ie目錄中使用以下命令從OSX和Fendora中的終端運行此程序:
java ie.moguntia.webcrawler.Psucker http://www.wikipedia.org test
但是我收到以下錯誤:
Exception in thread "main" java.lang.NoClassDefFoundError: ie/moguntia/webcrawler/Psucker
Caused by: java.lang.ClassNotFoundException: ie.moguntia.webcrawler.Psucker
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
我之前從未運行過使用命令行中的軟件包的應用程序,因此無法確定錯誤。
我試圖使用export CLASSPATH=.
設置類路徑export CLASSPATH=.
這樣就可以將當前目錄添加到類路徑中。
目錄結構如下:
ie/moguntia/webcrawler/
根據編譯類的位置,您需要在java命令中包括此位置,例如,如果它們位於classes
目錄中:
java -cp classes ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test
或如果它們在當前目錄中:
java -cp . ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test
要不就
java ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test
這是我運行該文件的方法(將文件解壓縮,cd到目錄,編譯,查找類,運行):
(13:55:52) ~/Desktop/temp → ll
total 32
-rw-r--r--@ 1 Nils.Winkler staff 14K 12 Mär 13:41 multiweb.zip
(13:56:01) ~/Desktop/temp → unzip multiweb.zip -d multiweb
Archive: multiweb.zip
creating: multiweb/CVS/
creating: multiweb/ie/
creating: multiweb/ie/CVS/
creating: multiweb/ie/moguntia/
creating: multiweb/ie/moguntia/CVS/
creating: multiweb/ie/moguntia/threads/
creating: multiweb/ie/moguntia/threads/CVS/
inflating: multiweb/ie/moguntia/threads/ControllableThread.java
inflating: multiweb/ie/moguntia/threads/MessageReceiver.java
inflating: multiweb/ie/moguntia/threads/ObjectQueue.java
inflating: multiweb/ie/moguntia/threads/Queue.java
inflating: multiweb/ie/moguntia/threads/ThreadController.java
creating: multiweb/ie/moguntia/webcrawler/
creating: multiweb/ie/moguntia/webcrawler/CVS/
inflating: multiweb/ie/moguntia/webcrawler/PSucker.java
inflating: multiweb/ie/moguntia/webcrawler/PSuckerThread.java
inflating: multiweb/ie/moguntia/webcrawler/SaveURL.java
inflating: multiweb/ie/moguntia/webcrawler/URLQueue.java
inflating: multiweb/ie/moguntia/webcrawler/WSDLCrawler.java
inflating: multiweb/ie/moguntia/webcrawler/WSDLCrawlerThread.java
(13:56:08) ~/Desktop/temp → cd multiweb
(13:56:57) ~/Desktop/temp/multiweb → javac ie/moguntia/webcrawler/*.java
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
(13:57:11) ~/Desktop/temp/multiweb → find . -name *.class
./ie/moguntia/threads/ControllableThread.class
./ie/moguntia/threads/MessageReceiver.class
./ie/moguntia/threads/Queue.class
./ie/moguntia/threads/ThreadController.class
./ie/moguntia/webcrawler/PSucker.class
./ie/moguntia/webcrawler/PSuckerThread.class
./ie/moguntia/webcrawler/SaveURL.class
./ie/moguntia/webcrawler/URLQueue.class
./ie/moguntia/webcrawler/WSDLCrawler.class
./ie/moguntia/webcrawler/WSDLCrawlerThread.class
(13:57:18) ~/Desktop/temp/multiweb → java ie.moguntia.webcrawler.PSucker http://www.wikipedia.org test
[0] http://www.wikipedia.org
如果您從ie目錄外部運行它,它應該可以工作。
注意,通常不建議依賴CLASSPATH
環境變量。 而是使用-cp
開關將classpath明確地放在hte命令行上
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.