JPype是一个了不起的项目,因为我允许JVM
直接实例化Python
.
不幸的是,我陷入了第一个婴儿步骤.
我A.java
有源代码(located in C:\tmp folder
):
class A { public A() { super(); } public String sayHi() { return("Hello"); } }
哪个被编译成一个类,使用: javac A.java
因此,A.class位于C:\tmp
文件夹中.
我有以下Python
源代码:
import os import jpype jpype.startJVM(jpype.getDefaultJVMPath(), '-ea', '-Djava.class.path=c:\\tmp') A = jpype.JClass("A") a = A() print a.sayHi() jpype.shutdownJVM()
当我运行它时,我得到以下错误:
C:\tmp>jpype_test.py Traceback (most recent call last): File "C:\tmp\jpype_test.py", line 10, inA = jpype.JClass("A") File "C:\Python27\lib\site-packages\jpype\_jclass.py", line 54, in JClass raise _RUNTIMEEXCEPTION.PYEXC("Class %s not found" % name) jpype._jexception.ExceptionPyRaisable: java.lang.Exception: Class A not found
由于我找不到A类,这可能是一个与CLASSPATH相关的问题,但我无法意识到我做错了什么.
有线索吗?
编辑1:
问题依然存在.但是,只是为了添加我的问题,如果我使用本机java库,如:java.util,代码运行WITHOUT错误.例如,下面的代码有效:
import jpype jpype.startJVM(jpype.getDefaultJVMPath()) util = jpype.JPackage("java.util") al = util.ArrayList() al.add(1) al.add(2) print al.size() jpype.shutdownJVM()
并返回2.
编辑2:
问题解决了,见下面的答案......
我解决了这个问题,我会在这里给出记录的答案.
1)源代码没有错.
2)问题是我的Python
是32位而我的java sdk
(包括javac字节码编译器)是64位.我卸载java sdk
并重新安装了32位版本.完成!解决了!