在python中通过jpype将jar添加到JVM类路径的正确方法是什么?
我最初使用的是Jpype.startJVM(jvmPath, "-Djava.class.path=%s" % (paths))
。
但是我知道扩展机制已经过时了,错误日志建议我使用“-classpath”
我尝试了下面的方法(并使用了几种变体),但我得到了一个无法识别的选项错误Jpype.startJVM(jvmPath, "-classpath =%s" % (paths))
。
我也尝试了Jpype.startJVM(jvmPath, classpath = paths)
,但我得到的扩展机制是折旧错误
1条答案
按热度按时间ee7vknir1#
使用
-Djava.class.path=…
而不是-classpath …
指定类路径是不寻常的,但与删除的扩展机制完全无关。正如错误消息所述,问题是<JAVA_HOME>/lib/ext
的存在。演示此问题(在此示例中使用Windows)
纯Java安装没有
ext
文件夹,所以一定是安装程序创建了它,假设旧的扩展机制已经不存在了。由于在这种错误的假设下运行软件可能会导致更多难以诊断的问题,Java供应商决定在这个文件夹存在时立即无条件地退出。因此,您必须删除该文件夹。如果它不是空的,则可能包含应用程序所需的jar文件。因此,您必须将它们移动到一个可以维护它们的新位置。然后,您必须将它们包含在您的类路径中。使用
-Djava.class.path=…
还是-classpath …
并不相关。为了解决命令行选项语法的问题,它是
-classpath path
,没有任何=
符号。根据用于启动新进程的API,如果您没有提供一个命令行字符串,shell会将其分解为参数,您必须确保将其视为两个参数,-classpath
,后跟实际路径。