我在MAC OS的本地服务器的Django项目中使用Java程序https://github.com/antonydeepak/ResumeParser/时遇到问题。

我已经在Django项目中安装了ResumeParser,例如:

-Django项目
    -app1
    -app2
    -ResumerParser

这是我的代码,但显示“无法找到或加载主类”。

if form.is_valid():
    f = form.save(commit=False)

    resume = form.cleaned_data['resume']

    cmd = ['java', '-cp', 'bin/:../GATEFiles/lib/:../GATEFiles/bin/gate.jar:lib/*', 'code4goal.antony.resumeparser.ResumeParserProgram %s textOutput.json' % resume]

    subprocess.Popen(cmd)


关于如何解决这个问题的任何线索?我已经在StackOverflow中尝试过与该主题相关的所有帖子,但均未成功。

提前致谢

最佳答案

您正在将定界符参数与按空格分组的参数混合在一起。

cmd = ['java', '-cp', 'bin/:../GATEFiles/lib/:../GATEFiles/bin/gate.jar:lib/*', 'code4goal.antony.resumeparser.ResumeParserProgram %s textOutput.json' % resume]


您的最后一个参数被视为单个参数,并由subprocess用空格保护:

"code4goal.antony.resumeparser.ResumeParserProgram resume_value textOutput.json"

=>整个"class<space>param1<space>param2"被视为您的班级:难怪为什么找不到它。

拆分所有参数,即可使用,subprocess不会对参数进行分组,不加引号(请注意将resume对象强制转换为str):

cmd = ['java', '-cp', 'bin/:../GATEFiles/lib/:../GATEFiles/bin/gate.jar:lib/*', 'code4goal.antony.resumeparser.ResumeParserProgram', str(resume),'textOutput.json']

07-27 13:22