args = [ "java",classpath,"-Djava.library.path=" + lib_path(),ea,"-Xmx1000m","-server","code_swarm",params ]
当我使用“.join(args)输出一个字符串并将其粘贴到我的shell提示符中时,JVM启动正常,一切正常.如果我在Python脚本中使用os.system(“”.join(args)),一切都会有效.
但是下面的代码不起作用:
os.execvp("java",args)
我收到以下错误:
Unrecognized option: -classpath [and then the classpath I created,which looks okay]Could not create the Java virtual machine.
什么给出了什么?为什么复制/粘贴到shell或使用os.system()工作,而不是os.execvp()?
解决方法 如果你的“classpath”变量包含例如“-classpath foo.jar”,它将无法工作,因为它认为选项名称是“-classpath foo.jar”.将它拆分为两个参数:[…,“ – classpath”,…].其他方式(复制和粘贴以及system())可以工作,因为shell会在空格处拆分命令行(除非它们被转义或引用).事实上,命令行作为一个数组传递给被调用的程序(与windows不同),并且JVM期望找到一个只有“-classpath”的元素,后跟另一个带有类路径的元素.
您可以通过调用以下小型Python脚本而不是JVM来查看自己的差异:
#!/usr/bin/pythonimport sysprint sys.argv总结
以上是内存溢出为你收集整理的在Python中使用os.execvp全部内容,希望文章能够帮你解决在Python中使用os.execvp所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)