我正在使用罗马教程页面http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedReader中的代码。也尝试这个:http://wiki.java.net/twiki/bin/view/Javawsxml/Rome05TutorialFeedReader
编译工作,但我不知道如何运行这些示例。为什么我只是在命令行中键入java FeedReader
或java 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 :(得分:0)
您需要在运行时类路径中包含rome(除了编译时类路径)
java -classpath lib/rome.jar FeedAggregator ...
答案 1 :(得分:0)
您尝试运行的示例位于包com.sun.syndication.samples
中。你说你是一个完全的初学者,所以,为了简单起见,我建议你删除package
和FeedReader.java
中FeedAggregator.java
开头的package
行。在删除FeedReader.class
指令后重新编译类。
然后,要运行这些类,请确保您与FeedAggregator.class
创建的类文件javac
和FeedAggregator
位于同一目录中。然后,尝试运行:
java -cp c:\projects\freshmeat\libs\rome-1.0.jar;c:\projects\freshmeat\libs\jdom-1.0.jar;. FeedReader
(同样适用于.
。)
另请注意,我已将当前目录-cp
添加到FeedReader
属性中。如果没有这个,Java虚拟机将无法知道它必须在当前目录中查找您的FeedAggregator
和package
类。
如果您要恢复FeedReader.class
指令,那么当您编译其源时,您会发现类文件FeedAggregator.class
和com\sun\syndication\samples
将在目录com
内创建。要从此位置运行类文件,您需要使用命令行,例如
java -cp c:\projects\freshmeat\libs\rome-1.0.jar;c:\projects\freshmeat\libs\jdom-1.0.jar;. com.sun.syndication.samples.FeedReader
然后从包含{{1}}子目录的目录运行它,而不是包含类文件的目录。
可以找到有关Java中包的更多信息here。