为什么 Jython 找不到我的 .jar 文件?

发布于 2024-11-30 08:51:27 字数 204 浏览 2 评论 0原文

我有一个我想使用的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白色秋天 2024-12-07 08:51:27

您需要确保 Jython 知道在 .jar 文件中搜索模块,这是使用 pythonpath 完成的。这将根据您的设置而有所不同,但在 PyDev 中:

  1. 在 Package Explorer(左侧的树)中,右键单击项目并转到“属性”。
  2. 选择左侧的“PyDev - PYTHONPATH”。
  3. 单击右侧的“添加 zip/jar/egg”按钮。
  4. 使用左侧的目录树浏览到包含 jar 的文件夹,然后单击右侧 .jar 文件旁边的复选框,然后单击“确定”,然后再次单击“确定”。

您还应该检查尝试导入的模块名称是否与 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:

  1. In the Package Explorer (the tree on the left), right-click on the project and go to Properties.
  2. Select "PyDev - PYTHONPATH" on the left.
  3. Click the "Add zip/jar/egg" button on the right.
  4. Use the directory tree on the left to browse to the folder containing your jar, then click the checkbox next to the .jar file on the right, and click OK, then OK again.

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 of

  • import it like import foo.bar.myJavaPackage, and use the contents like obj = foo.bar.myJavaPackage.someClass, or
  • import it like from foo.bar import myJavaPackage, and use the contents like obj = myJavaPackage.someClass, or
  • import it like from foo.bar.myJavaPackage import someClass, and use it like obj = myClass, but careful of name collisions using this method.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文