找不到JPype类

 Linda--林琳 发布于 2023-01-17 11:47

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, in 
    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,代码运行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 个回答
  • 我解决了这个问题,我会在这里给出记录的答案.

    1)源代码没有错.

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

    2023-01-17 11:50 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有