【问题标题】:JPype HeadachesJPype 头痛
【发布时间】:2012-07-29 22:38:20
【问题描述】:

我找到了一些关于如何将用户构建的 .class 和 .jar 文件导入 JPype 的说明,但我似乎在让任何工作都正常工作时遇到了很多麻烦。

什么有效:我可以导入标准的 java 内容并打印 HELLO WORLD 等。

我尝试过的一些方法:

我尝试将-Djava.class.path 与包含相关类文件的 jar 的路径添加到包含(几个文件夹下)相关 .class 文件的目录结构以及“-Djava.ext.dirs” .我已经重新编译并重新安装了不同的 JVM 位置。我尝试实例化的类是外部的、公共的,并且有一个公共构造函数。

我在 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 not callable 错误。基本上,JPype 找不到我的东西。

非常感谢!

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

【问题讨论】:

  • 您能否分享一个使用 Jpype 从 Python 执行 jar 的类函数的工作示例。我找不到工作样本,尝试了几个选项但失败并出现错误“不可调用”

标签: java python jpype


【解决方案1】:

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

您也可以尝试加载 org 包,然后通过该包访问其他包,如我分享的链接所示:

msmexplorer = JPackage('org').joofee.meh.msmexplorer T = msmexplorer.MSMExplorer()

【讨论】:

  • 感谢您的回答。从那以后发生了一些事情:我发现实例化其他类没有那么多问题。我遇到问题的类声明是:public class MSMExplorer extends JPanel implements MSMConstants {...所以问题可能是没有导入 JPanel?另外,我听说 JPype 对 awt / swing 的支持充其量是最小的。不幸的是,我的应用程序都是摇摆不定的,所以我一直在寻找其他选项(除非这实际上对 jpype 可行)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
  • 2012-09-07
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多