Я пытаюсь начать с API программного обеспечения java weka. Я написал следующий код для тестирования:Как скомпилировать java-программу с импортированными классами?
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
Этот подход не работает, я получаю следующее сообщение об ошибке:
Exception in thread "main" java.lang.NoClassDefFoundError: weka/core/Instances at hello_weka.main(hello_weka.java:8) Caused by: java.lang.ClassNotFoundException: weka.core.Instances at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) ... 1 more
Что я делаю неправильно?
Я предполагаю, что я делаю только некоторые совершенно глупые вещи, так как я просто начинаю писать на Java. Если да, пожалуйста, извините меня и попробуйте сказать мне, как я могу сделать лучше.
Edit:
когда я пытаюсь вещь, предложенную в ответах, которые я получаю следующую ошибку:
Exception in thread "main" java.lang.NoClassDefFoundError: hello_weka Caused by: java.lang.ClassNotFoundException: hello_weka at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) Could not find the main class: hello_weka. Program will exit.
Когда я это сделаю, я получаю еще одну ошибку. (см. отредактированный вопрос) – aldorado
Есть некоторые проблемы с вашими зависимостями классов. Убедитесь, что вы предоставили правильный путь к файлу jar в вашем пути к классам (-cp) –