首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类在Jpype上未找到错误。

类在Jpype上未找到错误。
EN

Stack Overflow用户
提问于 2014-05-07 14:55:36
回答 2查看 3.8K关注 0票数 3

我已经阅读并搜索了所有堆栈溢出。我也找到了JPype class not found,但它对我没有帮助,尽管它已经解决了!我也有同样的问题!我正在使用Mac,python 2.7.6

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

回溯(最近一次调用):文件"/Users/jeren/Desktop/aa.py",第13行,在A= jpype.JClass("A")文件_RUNTIMEEXCEPTION.PYEXC第54行中,在JClass name _RUNTIMEEXCEPTION.PYEXC("Class %s not“% name)中java.lang.ExceptionPyRaisable: java.lang.Exception: A类未找到

aa.py :导入原型

代码语言:javascript
复制
import os

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

A = jpype.JClass("A")

a = A()

jpype.shutdownJVM()

A.java:

代码语言:javascript
复制
class A

{

    public A()

    {

        super();

    }

    public String sayHi()

    {

        return("Hello");

    }



    public static void main(String[] argv)

    {

        System.out.println ("Hello ");

    }



    public static int add(int a, int b)

    {

        return(a+b);

    }

}

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-12 12:03:49

一切都很好,只需要在A班的开头加上一个“公共”字:

代码语言:javascript
复制
    public class A
    {       
        public A()       
        {
            super();
        }
        public String sayHi()

        {
            return("Hello");
        }
票数 1
EN

Stack Overflow用户

发布于 2019-03-29 11:55:32

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

A.检查JDK路径

我安装了几个版本的Java,getDefaultJVMPath没有提供预期的路径。我需要替换

代码语言:javascript
复制
jpype.getDefaultJVMPath()

使用到JDK的路径,它实际上已用于编译代码,例如

代码语言:javascript
复制
D:/jdk11/bin/server/jvm.dll

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

parentFolder

  • pkg/main.py
  • bin/foo/foo. jpype.startJVM(jvmPath,'-Djava.class.path=../bin")链接= jpype.JClass('foo.Foo')

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

C. -cp选项不起作用--我尝试使用-cp选项,而不是-Djava.class.path,我会发现它更有诱惑力。但是,下列代码不起作用:

代码语言:javascript
复制
jpype.startJVM(jvmPath, '-cp', classPath)

D. jars需要单独包含

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

parentFolder

  • foo/main.py
  • lib/foo.jar

以下代码不起作用:

代码语言:javascript
复制
jpype.startJVM(jvmPath, '-Djava.class.path=../lib/*")
link = jpype.JClass('foo.Foo')

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

代码语言:javascript
复制
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的解决方案)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23521273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档