java - JPype1=0.7.0: TypeError: Unable to convert str ro java type class java.lang.String
问题描述
当使用 JPype1 将 python str 转换为 java.lang.String 时,我在某些 windows 机器上遇到错误,而在其他 windows 机器上没有。
TypeError中的文件“lib\site-packages\jpype_jobject.py”第 86 行
__new__
:无法将 str 转换为 java 类型类 java.lang.String
我使用 PyInstaller 3.5 将代码打包成“exe”,然后在具有相同 JDK 的几台 Windows 机器上运行 exe,但得到不同的结果。
编译环境:windows,python 3.6.5,JPype1 0.7.0,PyInstaller 3.5,
运行环境:windows,JDK 1.8
import jpype
from jpype import JClass
jpype.startJVM(jpype.getDefaultJVMPath())
mystr = "i'm a string"
jstr = jpype.JObject(mystr, JClass("java.lang.String"))
我试图阅读源代码“ https://github.com/jpype-project/jpype.git ”但没有得到任何东西。
任何人都可以在这里引导我朝着正确的方向前进吗?
解决方案
最后我发现另一个错误日志说JVM没有成功启动。因为机器上有两个版本的jdk。虽然 "java -version" 显示 1.8,但 %JAVA_HOME% 仍然是 1.7。
推荐阅读
- wpf - 如何在较新版本的 chrome 上运行 XBAP (WPF Web) 应用程序
- php - php 7.4 上未定义的函数 imagettftext
- git - 创建新的 GitHub 帐户后无法从私有仓库克隆/获取
- python - PyCall 无法使用 python InitError 的 pipenv 版本:检测到不兼容的`libpython`
- arcgis - 在 ArcGIS 或 QGIS 中添加大量标签是否有快速、有效的方法?
- python - How do I read a non standard csv file into dataframe with python or scala
- c - fread() 读取太多数据
- version-control - Perforce - 恢复我本地工作区中另一个用户打开的文件
- c# - 如何在不加载整个excel文件的情况下读取excel中的标题行(假设第一行是标题)
- typescript - 如何覆盖 TypeScript 中父类中重载的方法?