为什么 Jython 找不到我的 .jar 文件?
我有一个我想使用的 jar 文件(不是 Java 标准库的一部分)。
我已将 myJavaPackage.jar
放入我的项目目录中,并尝试import myJavaPackage
,但我不断收到 ImportError: No module named myJavaPackage。
我做错了什么?
I have a jar file (not part of the Java standard library) that I want to use.
I've put myJavaPackage.jar
into my project directory, and I'm trying to do import myJavaPackage
, but I keep getting ImportError: No module named myJavaPackage.
What am I doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要确保 Jython 知道在 .jar 文件中搜索模块,这是使用 pythonpath 完成的。这将根据您的设置而有所不同,但在 PyDev 中:
您还应该检查尝试导入的模块名称是否与 jar 文件中指定的包名称匹配。请注意,jar 文件的命名可能与包不同,尤其是当其中包含多个包时。
如果您有 .jar 的源代码,请打开包含您希望使用的代码的 .java 文件,并在顶部附近查找指定包的行。如果您发现一行内容类似于
package foo.bar.myJavaPackage;
,那么您必须执行import foo.bar.myJavaPackage
,并使用像obj = foo.bar.myJavaPackage.someClass
这样的内容,或者from foo.bar import myJavaPackage
这样导入它,并使用像obj = 这样的内容myJavaPackage.someClass
,或者from foo.bar.myJavaPackage import someClass
一样导入它,并像obj = myClass
一样使用它,但要小心使用它的名称冲突方法。You need to make sure that Jython knows to search your .jar file for modules, which is done using pythonpath. This will differ depending on your setup, but in PyDev:
You should also check that the module name you are trying to import matches the package name as specified within the jar file. Note that the jar file might be named differently to the package, especially if there are multiple packages within it.
If you have the source for the .jar, open up the .java file containing the code you wish to utilise, and look for a line near the top that specifies the package. If you find a line that says something like
package foo.bar.myJavaPackage;
, then you must do one ofimport foo.bar.myJavaPackage
, and use the contents likeobj = foo.bar.myJavaPackage.someClass
, orfrom foo.bar import myJavaPackage
, and use the contents likeobj = myJavaPackage.someClass
, orfrom foo.bar.myJavaPackage import someClass
, and use it likeobj = myClass
, but careful of name collisions using this method.