Я думаю, что ошибка в двойные кавычки:
system("\"java weka.classifiers.trees.J48 -t ML_data.arff -d training.model\"");
// ^^ ^^
Этот фрагмент кода вместо этого должен быть следующим:
system("java weka.classifiers.trees.J48 -t ML_data.arff -d training.model");
Вы кажетесь использовать \"
для того, чтобы передать двойные кавычки в вызов system()
, но это чрезмерно и вызывает ошибку. (Синтаксис для избежания двойной кавычки правильный, но вам не нужно передавать дополнительные кавычки в функцию system()
.)
Вот минимальный тестовый пример, чтобы показать, что происходит в Linux с использованием синтаксиса, который вы использовали:
#include <cstdlib>
int main(void)
{
system("\"ls -l\"");
}
выход:
sh: ls -l: command not found
с другой стороны, код system("ls -l");
правильно называет ls -l
и отображает вывод в консоли.
Edit:
Насколько идет ваше второе сообщение об ошибке:
Error: Could not find or load main class weka.classifiers.functions.Logistic
Это очень распространенная проблема: What does “Could not find or load main class” mean?. Вы должны установить путь к классам, чтобы указать на weka.jar
в вашей системе, например, как так (изменить точный путь к тому, в дистрибутиве):
system("java -cp /usr/share/java/weka.jar weka.classifiers.trees.J48 -t ML_data.arff -d training.model");
или в командной строке (обратите внимание на использование export
команда здесь)
export CLASSPATH=/usr/share/java/weka.jar:$CLASSPATH
./name_of_your_cpp_executable_file
или положить CLASSPATH
в вашем ~/.bashrc
:
CLASSPATH=/usr/share/java/weka.jar:$CLASSPATH
export CLASSPATH
сообщение об ошибке точно, что вы получите при выполнении этот код или поведение, которое вы наблюдаете, заставляет вас думать, что вы столкнулись с ошибкой. – iksemyonov
Мое предложение разрешить проблему? Мне действительно интересно. – iksemyonov
да, но все же Linux дает мне ошибку Ошибка: не удалось найти или загрузить основной класс weka.classifiers.functions.Logistic –