C++;调用javajar

C++;调用javajar,java,c++,execvp,Java,C++,Execvp,我想使用execvp调用java来执行函数,如下面的代码: #include <iostream> #include <stdlib.h> using namespace std; int main() { char* const argv[]= { "-mx300m","-cp","\'stanford-postagger.jar:/root/NLP/postagger/:.\'",

我想使用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;
}

有人能帮我吗?非常感谢:)

删除-cp参数中过多的引号\'。从shell脚本启动时需要它,而该脚本最终将它们剥离。

看起来您的类路径有问题。您是否已检查是否已编译java类/这些类是否在您的路径中?与您的错误没有实际关系,但您需要将
“java”
作为
argv
数组中的第一个字符串。第一个元素是可执行文件名,参数如下。
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.