在我自己的java文件中使用weka.jar文件时的java.lang.NoClassDefFoundError

时间:2014-03-25 14:34:48

标签: java classpath weka noclassdeffounderror

我在执行java程序时遇到问题。代码放在文件RunMining.java中,包含多个import weka.[..]行。 weka库(weka.jar)放在同一个文件夹中。

我编译它:

$ javac -cp weka.jar RunMining.java

这会创建三个文件:RunMining.class, RunMining$1.class, RunMining$classifierType.class

当我运行它时:java -cp weka.jar RunMining我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: RunMining
Caused by: java.lang.ClassNotFoundException: RunMining
    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)

我的RunMining.java文件只包含一个名为RunMining的类,其中包含main方法。我不希望将weka.jar文件添加到CLASSPATH,因为这个文件将使用makefile编译并在不同的机器上使用脚本执行。 有关如何运行已编译文件的任何建议吗?

1 个答案:

答案 0 :(得分:1)

您需要添加已编译文件的类路径,如下所示:

java -cp weka.jar;. RunMining

这假设您的文件是在您的javac命令建议的根目录中编译的。