Java 在Jpype上找不到类错误
我已经阅读并搜索了所有堆栈溢出。。我也发现了,但它没有帮助我,虽然它解决了!我也有同样的问题!我正在使用Mac,python 2.7.6 我的python代码和A.java都在桌面上。但我一直收到这个错误: 回溯(最近一次调用上次):文件 “/Users/jeren/Desktop/aa.py”,第13行,在 A=jpype.JClass(“A”)文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/jpype/_JClass.py”, 第54行,在JClass中 raise\u RUNTIMEEXCEPTION.PYEXC(“未找到类%s”%name)java.lang.ExceptionPraisable:java.lang.Exception:未找到类A aa.py: 导入jpypeJava 在Jpype上找不到类错误,java,python,macos,python-2.7,jpype,Java,Python,Macos,Python 2.7,Jpype,我已经阅读并搜索了所有堆栈溢出。。我也发现了,但它没有帮助我,虽然它解决了!我也有同样的问题!我正在使用Mac,python 2.7.6 我的python代码和A.java都在桌面上。但我一直收到这个错误: 回溯(最近一次调用上次):文件 “/Users/jeren/Desktop/aa.py”,第13行,在 A=jpype.JClass(“A”)文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site pac
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位的!问题出在哪里 一切正常,只需在a类开头添加一个“public”:
public class A
{
public A()
{
super();
}
public String sayHi()
{
return("Hello");
}
下面是关于为jpype指定类路径的更多节点 A.检查JDK路径 我安装了几个版本的Java JDK,但getDefaultJVMPath没有生成预期的路径。我需要替换
jpype.getDefaultJVMPath()
对于JDK的路径,实际上已经用于编译代码,例如
D:/jdk11/bin/server/jvm.dll
B.相对路径
可以使用相对路径。例如,如果我的python文件位于包文件夹“pkg”中,而我的java类文件位于“bin”文件夹的子文件夹“foo”中:
父文件夹
- pkg/main.py
- bin/foo/foo.class Jtype.startJVM(jvmPath,'-Djava.class.path=../bin”) link=jpype.JClass('foo.foo')
jpype.startJVM(jvmPath, '-cp', classPath)
jpype.startJVM(jvmPath, '-Djava.class.path=../lib/*")
link = jpype.JClass('foo.Foo')
D.罐子需要单独放入
我试图包含一个包含几个jar文件的文件夹
父文件夹
- foo/main.py
- lib/foo.jar
jpype.startJVM(jvmPath, '-cp', classPath)
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')
(解决方案来自)