在Jpyp上找不到类错误

2024-10-01 09:30:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经阅读并搜索了所有堆栈溢出。。我也找到了JPype class not found,但它没有帮助我,虽然它被解决了!我也有同样的问题!我使用的是Mac,python2.7.6

我的python代码和A.java都在桌面上。但我一直收到这个错误:

Traceback (most recent call last): File "/Users/jeren/Desktop/aa.py", line 13, in A = jpype.JClass("A") File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/jpype/_jclass.py", line 54, in JClass raise _RUNTIMEEXCEPTION.PYEXC("Class %s not found" % name) java.lang.ExceptionPyRaisable: java.lang.Exception: Class A not found

在aa.py公司: 导入jpype

import os

jpype.startJVM(jpype.getDefaultJVMPath(), "-ea", "-Djava.class.path=/Users/jeren/Desktop/")

A = jpype.JClass("A")

a = A()

jpype.shutdownJVM()

A.java语言:

^{pr2}$

我的mac、java和python都是64位的!问题出在哪里?在


Tags: inpylinenotjpypejavausersclass
2条回答

下面是一些关于为jpype指定类路径的进一步节点。在

A.检查JDK路径

我安装了几个版本的javajdk,但是getDefaultJVMPath没有产生预期的路径。我需要替换

jpype.getDefaultJVMPath()

对于JDK的路径,它实际上被用来编译代码,例如

^{pr2}$

B.相对路径 可以使用相对路径。例如,如果我的python文件位于包文件夹“pkg”中,而java类文件位于“bin”文件夹的子文件夹“foo”中:

父文件夹

  • 包装/主.py在
  • 垃圾桶/食品/食品类在

    在jpype.startJVM(jvmPath,'-Djava.class.path=../bin“) 链接=jpype.JClass类('福。福')

在本例中,java应用程序的工作目录将是pkg文件夹。换句话说,在Foo类的main方法中,您可能需要使用“../”来访问parentFolder。在

C.-cp选项不起作用 我尝试使用-cp选项而不是-Djava.class.path,我会觉得更坚定。但是,以下代码不起作用:

jpype.startJVM(jvmPath, '-cp', classPath)

D.需要单独包括罐子

我试图包含一个包含几个jar文件的文件夹。在

父文件夹

  • 福/主.py在
  • 图书馆/食物罐在

以下代码不起作用:

jpype.startJVM(jvmPath, '-Djava.class.path=../lib/*")
link = jpype.JClass('foo.Foo')

每个jar文件需要单独包含,例如:

libOath = '../lib'
libJarPaths = str.join(';', [libPath + '/' + name for name in os.listdir(libPath)])
jpype.startJVM(jvmPath, '-Djava.class.path=../lib/*")
link = jpype.JClass('foo.Foo')

(来自JPype (Python): importing folder of jar's的解决方案)

一切都很好,只需要在a级开头添加一个“public”:

    public class A
    {       
        public A()       
        {
            super();
        }
        public String sayHi()

        {
            return("Hello");
        }

相关问题 更多 >