2012-02-02 88 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