2012-02-02 126 views
-1

我正在使用羅馬教程頁面http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedReader中的代碼。也嘗試這一個:http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedReaderNoClassDefFoundError並找不到或加載主類

編譯工程,但我不知道如何運行這些例子。爲什麼我只需鍵入java FeedReaderjava FeedAggregator進入命令行,我得到的錯誤:

C:\projects\freshmeat\src>java FeedAggregator http://freecode.com/?format=atom 
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/syndication/f 
eed/synd/SyndFeed 

加上下面這個錯誤

這是怎麼回事,我該如何解決這個問題,並嘗試這些東西大塊出來嗎?我怎樣才能與羅馬合作?

回答

0

您需要包括羅馬在運行時類路徑(除了編譯時classpath中)

java -classpath lib/rome.jar FeedAggregator ... 
+0

我確實在我的課程路徑中加入了羅馬。這裏是我的編譯命令:'C:\ projects \ freshmeat \ src> javac -cp c:\ projects \ freshmeat \ libs \ rome-1.0.jar; c:\ p rojects \ freshmeat \ libs \ jdom-1.0.jar FeedAggregator.java' – blaughli 2012-02-02 22:04:02

+0

這是編譯時類路徑。您還必須將它包含在運行時類路徑中 – Bozho 2012-02-02 22:06:04

+0

謝謝。好的,現在我得到這個:'C:\ projects \ freshmeat \ src> java -cp c:\ projects \ freshmeat \ libs \ rome-1.0.jar; c:\ pr ojects \ freshmeat \ libs \ jdom-1.0。 jar FeedAggregator 錯誤:無法找到或加載主類FeedAggregator' – blaughli 2012-02-02 22:07:02

0

你正在嘗試運行的樣品是在包com.sun.syndication.samples。你說你是一個完整的初學者,所以,爲了使事情更簡單,我建議你刪除FeedReader.javaFeedAggregator.java中的每一個以package開頭的行。在刪除package指令後重新編譯這些類。

然後,要運行這些類,請確保您與javac創建的類文件FeedReader.classFeedAggregator.class位於同一目錄中。然後,嘗試運行:

 
java -cp c:\projects\freshmeat\libs\rome-1.0.jar;c:\projects\freshmeat\libs\jdom-1.0.jar;. FeedReader 

還請注意,我已經添加了當前目錄,.,到-cp屬性(以及類似的FeedAggregator)。否則,Java虛擬機將不知道它必須查看當前目錄以查找您的FeedReaderFeedAggregator類。

如果你要恢復的package指令,你會發現類文件FeedReader.classFeedAggregator.class將一個目錄裏面com\sun\syndication\samples當你編譯他們的源創建。爲了從該位置運行的類文件,你會使用一個命令行如

 
java -cp c:\projects\freshmeat\libs\rome-1.0.jar;c:\projects\freshmeat\libs\jdom-1.0.jar;. com.sun.syndication.samples.FeedReader 

,你會從包含com子目錄,而不是包含在類文件的目錄的目錄中運行此。

有關Java軟件包的更多信息,請參見here