我已经阅读并搜索了所有堆栈溢出。我也找到了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 :导入原型
import os
jpype.startJVM(jpype.getDefaultJVMPath(), "-ea", "-Djava.class.path=/Users/jeren/Desktop/")
A = jpype.JClass("A")
a = A()
jpype.shutdownJVM()A.java:
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位!问题出在哪里?
发布于 2014-05-12 12:03:49
一切都很好,只需要在A班的开头加上一个“公共”字:
public class A
{
public A()
{
super();
}
public String sayHi()
{
return("Hello");
}发布于 2019-03-29 11:55:32
下面是一些关于为jpype指定类路径的进一步节点。
A.检查JDK路径
我安装了几个版本的Java,getDefaultJVMPath没有提供预期的路径。我需要替换
jpype.getDefaultJVMPath()使用到JDK的路径,它实际上已用于编译代码,例如
D:/jdk11/bin/server/jvm.dllB.相对路径使用相对路径是可能的。例如,如果python文件位于包文件夹"pkg“中,而java类文件位于"bin”文件夹的子文件夹"foo“中:
parentFolder
对于本例,java应用程序的工作目录将是pkg文件夹。换句话说,在Foo类的主要方法中,您可能需要使用"../“来访问parentFolder。
C. -cp选项不起作用--我尝试使用-cp选项,而不是-Djava.class.path,我会发现它更有诱惑力。但是,下列代码不起作用:
jpype.startJVM(jvmPath, '-cp', classPath)D. jars需要单独包含
我试图包含一个包含几个jar文件的文件夹。
parentFolder
以下代码不起作用:
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')https://stackoverflow.com/questions/23521273
复制相似问题