Jpype 使用, class not found.

2015-08-25 18:15:26 +08:00
 hughV2
尝试了很多次,博文里大多说的 是 classpath 的设置问题。但这个应该不会有问题的。

Hello.java
——————————————————————————————————————
public class Hello {
public void sayHello (){
System.out.println ("hello world.");
}
public String getStr (String str ){
System.out.println ("let's go .");
return str;
}
public static void main (String[] args ) {
System.out.println ("say hello.");
}
}

.py
______________________________________________________________
#!/usr/bin/python
#-*-coding:utf-8-*-
import jpype
externalClassPath = '/data/flowgw/lib/' #class 文件所在的目录
jpype.startJVM (jpype.getDefaultJVMPath (), "-DJava.class.path = " + externalClassPath )
jclass = jpype.JClass ('Hello')
obj = jclass () # new 一个 Demo 对象
obj.sayHello () #打印 hello world
jpype.shutdownJVM ()

[ ERROR ]
————————————————————————————————————
[resin_ana@fg-test lib]$ python pype_test1.py
Traceback (most recent call last ):
File "pype_test1.py", line 8, in <module>
jclass = jpype.JClass ('Hello')
File "/usr/local/lib/python2.7/site-packages/jpype/_jclass.py", line 55, in JClass
raise _RUNTIMEEXCEPTION.PYEXC ("Class %s not found" % name )
jpype._jexception.RuntimeExceptionPyRaisable: java.lang.RuntimeException: Class Hello not found



PS:在 redhat 中,使用 pip install jpype1 安装的,版本 jpype 0.6.1
其中,官方文档中说明了,混合了 32 位和 64 位 python 、 jdk 的是不行的,
我的 python 是 64 位的,而 java -version 显示
OpenJDK Runtime Environment (IcedTea6 1.10.4 ) (rhel-1.41.1.10.4.el6-x86_64 )
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode )

不知道是不是这个原因。
好几天了都没搞好,泪奔~~
7277 次点击
所在节点    Python
6 条回复
xunyu
2015-08-25 22:05:17 +08:00
我在 windows 上可以直接调用.java , linux 上没成功,编译成 jar 再调用的
jerrypy
2015-08-27 17:29:23 +08:00
.java 编译了吗?
hughV2
2015-08-28 15:12:06 +08:00
@jerrypy 在 windows 下 javac 编译
hughV2
2015-08-28 15:13:46 +08:00
@xunyu 可以调用 lang.java.system.println () 输出 hello ,但是我按照别人的 bolg 调用 class 都没成功。同样的报错。。。
xunyu
2015-09-08 11:38:16 +08:00
@hughV2 jpype 的坑在于如果内存不够也是会报这个错误,
hughV2
2015-09-10 15:26:53 +08:00
@xunyu 吐槽一下,好像就不会报别的错了~~
不过,之前的问题解决了,是我 rz 上传 jar 包用了 ascll 方式上传。。坑!
而且, class 的引用指定到目录, jar 包的引用指定到 jar 包。
[对于多个 jar 包] 我尝试过都写入路径,没成功,最后还是打包成一个 jar 包搞定的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/215920

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX