【问题标题】:JPype class not found找不到 JPype 类
【发布时间】:2014-06-19 06:36:24
【问题描述】:

JPype 是一个了不起的项目,因为我允许直接从 Python 实例化 JVM

不幸的是,我被困在了第一步。

我有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, in <module>
    A = 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,代码运行时不会出现错误。例如,下面的代码有效:

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:

问题已解决,请看下面的答案...

【问题讨论】:

    标签: java python jvm jpype


    【解决方案1】:

    我解决了这个问题,我会把答案在这里记录下来。

    1) 源代码没有问题。

    2) 问题是我的Python 是 32 位,而我的 java sdk(包括 javac 字节码编译器)是 64 位。我卸载了java sdk 并重新安装了 32 位版本。完毕!解决了!

    【讨论】:

      【解决方案2】:

      尝试像这样改变你的路径:

          jpype.startJVM(jpype.getDefaultJVMPath(), '-ea', '-Djava.class.path=c:\\tmp\')
      

      【讨论】:

        猜你喜欢
        • 2011-10-06
        • 1970-01-01
        • 2014-06-24
        • 1970-01-01
        • 2021-06-03
        • 2020-04-25
        • 2020-11-07
        • 1970-01-01
        • 2021-01-30
        相关资源
        最近更新 更多