我正在尝试开始使用java软件weka的API。我编写了以下代码进行测试:
import weka.core.Instances;
import java.io.BufferedReader;
import java.io.FileReader;
public class hello_weka {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new FileReader("/home/aljoscha/Masterarbeit/weka_examples/iris.arff"));
Instances data = new Instances(reader);
reader.close();
// setting class attribute
data.setClassIndex(data.numAttributes() -1);
System.out.println(data);
System.exit(0);
}
}
我在Eclipse中执行它时工作正常。 但是我无法让它在终端中运行。
我试图在编译期间提供.jar路径,然后从编译类的目录中执行程序。
javac -cp /usr/share/java/weka.jar hello_weka.java
java hello_weka
这种方法不起作用,我收到以下错误:
线程“main”中的异常java.lang.NoClassDefFoundError:weka / core / Instances 在hello_weka.main(hello_weka.java:8) 引起:java.lang.ClassNotFoundException:weka.core.Instances 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) 在java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) ......还有1个
我做错了什么?
我想我只是做了一些完全愚蠢的事情,因为我刚开始用Java编写代码。如果是这样,请原谅我并告诉我如何做得更好。
修改
当我尝试在答案中提出的事情时,我得到以下错误:
线程“main”中的异常java.lang.NoClassDefFoundError:hello_weka 引起:java.lang.ClassNotFoundException:hello_weka 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) 在java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 找不到主类:hello_weka。程序将退出。
答案 0 :(得分:1)
试试这个:
java -cp /usr/share/java/weka.jar hello_weka
答案 1 :(得分:1)
您还需要将当前目录(存储您自己的类的位置)添加到类路径中:
java -cp .;/usr/share/java/weka.jar hello_weka
答案 2 :(得分:0)
在执行程序时,您还需要为JAR提供类路径:
java -cp /usr/share/java/weka.jar hello_weka
答案 3 :(得分:0)
我终于找到了答案:邓尼的答案几乎是正确的。对我来说,如果我提供两者的类路径,jar文件和类文件,但由:
分隔,它就可以工作。
java -cp /usr/share/java/weka.jar:/home/aldorado/myjavascripts/ hello_weka
根据您使用的操作系统/ JDK,这可能会有所不同吗?