2012-08-01 71 views
2

我发现了几条关于如何将用户构建的.class和.jar文件导入到JPype的说明,但我似乎遇到了很多麻烦,无法找到任何工作。JPype头疼

什么作品:我可以导入标准的Java的东西,并打印HELLO WORLD等。

一些什么我已经试过:

我试着加入-Djava.class.path与路径包含相关类文件的罐子,包含的目录结构(几个文件夹下)相关的.class文件,以及'-Djava.ext.dirs'。我重新编译并重新安装了不同的JVM位置。我试图实例化的类是Outer,public,并且有一个公共构造函数。

我在OSX 10.6上使用Python 2.6.1。

我目前的测试文件: 从jpype进口*

startJVM(getDefaultJVMPath(), '-Djava.class.path=/Users/gestalt/Documents/msmexplorer_git/msmexplorer/MSMExplorer/build/classes') 
java.lang.System.out.println("hello world") 
msmexplorer = JPackage('org.joofee.meh.msmexplorer') 
T = msmexplorer.MSMExplorer() 
shutdownJVM() 

如果我使用JCLASS我总是从JPype ClassNotFound的异常;如果我使用JPackage,我会得到Package不可调用的错误。基本上,JPype找不到我的东西。

非常感谢!

编辑(可能有帮助的调试东西...): 有没有简单的方法来打印哪些第三方Java类可用/导入?

+0

您可以请您分享一个使用Jpype从Python执行类的功能的工作示例。我无法找到一个工作示例,尝试了几个选项,但失败,错误'不可回调' – Sankalp 2017-01-22 19:34:18

回答

0

在这个link中引用了包不可调用错误),似乎您需要确保可以从工作目录访问java类文件。我不确定jvm类路径如何发挥作用,我会想你是如何做到的。

您也可以尝试加载组织包,然后通过一个作为链接我共享节目让其他包:

msmexplorer = JPackage上(“组织”)joofee.meh.msmexplorer T = msmexplorer.MSMExplorer()

+0

感谢您的答案。自从发生了一点事情之后:我发现我没有像实例化其他类一样多的问题。我遇到的类的声明是:'公共类MSMExplorer扩展JPanel实现MSMConstants {'...所以也许问题是JPanel不被导入?另外,我听说JPype的awt/swing支持最少;不幸的是,我的应用程序是全部摆动的,所以我一直在寻找其他选项(除非它实际上适用于jpype) – bcr 2012-08-02 17:51:11