如何使用导入的类编译java程序?

时间:2014-01-17 16:33:31

标签: java compilation classpath

我正在尝试开始使用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。程序将退出。

4 个答案:

答案 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,这可能会有所不同吗?