Я хочу использовать execvp для вызова Java для выполнения функции, как в коде ниже:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
char* const argv[]= {
"-mx300m","-cp","\'stanford-postagger.jar:/root/NLP/postagger/:.\'",
"edu.stanford.nlp.tagger.maxent.MaxentTagger",
" -model","/root/NLP/postagger/models/english-bidirectional-distsim.tagger",
"-textFile","/root/NLP/postagger/sample-input.txt",
NULL
};
execvp("java",argv);
return 0;
}
но возникает ошибка:
Exception in thread "main" java.lang.NoClassDefFoundError: edu/stanford/nlp/tagger/maxent/MaxentTagger
Caused by: java.lang.ClassNotFoundException: edu.stanford.nlp.tagger.maxent.MaxentTagger
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: edu.stanford.nlp.tagger.maxent.MaxentTagger. Program will exit.
Может ли кто-нибудь помочь мне с этим? Спасибо большое 🙂
удалить лишние кавычки \ ‘в аргументе -cp. Это было необходимо при запуске из сценария оболочки, и этот сценарий в итоге удалил их.
Других решений пока нет …