gpt4 book ai didi

jython - 将 Jython 程序打包到可执行 jar 中

转载 作者:行者123 更新时间:2023-12-03 22:38:46 28 4
gpt4 key购买 nike

我正在尝试将 jython 程序打包到一个可执行 jar 中,用户只需双击即可运行,而无需提前安装 jython。最终,我想包含一个我用 jar 编写的附加库,但目前我只是想打包一个简单的程序并让它从 jar 中运行。

我尝试按照此处“使用 Jar 方法”部分中的 jar 说明进行操作:Jython FAQ: Using the Jar Method

我还在这里查看了幻灯片 25-28:Jython Update 2012 slides

最后在这里:
stackoverflow Question: Distributing My Python Scripts as Jars with Jython

我在运行 OS X 10.8.3 的 mac 上安装了 jython 2.5.3、jvm 1.6 和 python 2.7.3。

这些是我创建 jar 并运行它的步骤:

  • 从我的 jython 安装目录创建 jython.jar 的副本。
  • zip -r jython_copy.jar Lib (其中 Lib 为 jython 安装目录下的文件夹)
  • cp myJythonProgram.py __run__.py (myJythonProgram.py 不包含 'if 名称 == ' 行)
  • zip jython_copy.jar __run__.py
  • export CLASSPATH=/path/to/my/app/jython_copy.jar:$CLASSPATH

  • 我尝试使用以下三种方法运行 jar:
  • java org.python.util.jython -jar myapp.jar
  • java -cp myapp.jar org.python.util.jython -jar myapp.jar
  • java -jar myapp.jar -jar myapp.jar

  • 如果我的程序不使用任何导入语句,这将有效。

    但是我遇到了一个问题,当我运行 jar 时无法找到一些 python 包。例如,当我包含行 from random import random 时,我收到错误“ImportError: No module named random”。在我的程序中。当我从 javax.swing、java.awt、time 或 math 导入时,程序中的行没有出现错误。

    此外,我尝试使用我的库和一个 jython 程序打包一个 jar,该程序使用前面的步骤以及以下附加步骤导入我的库:
  • zip jython_copy.jar myLibrary.jar
  • jar ufm jython_copy.jar othermanifest.mf

  • othermanifest.mf 仅包含行 Class-Path: ./myLibrary.jar .

    这也给出了错误“ImportError:没有名为 myLibrary 的模块”

    如果我能深入了解我做错了什么或我应该采取的其他步骤,我将不胜感激。

    谢谢!

    最佳答案

    我意识到问题出在哪里,我想记录下来以防其他人遇到同样的问题。

    我使用的是 Jython 标准安装中的 jython.jar 文件,而不是独立的 jython.jar(Using the Jar Method 中的说明提到了这一点,但 Building Jars 中的说明没有提到)。我仍然不确定为什么将标准安装的 Lib/文件夹复制到该安装随附的 jython.jar 中在我的系统上不起作用。但是,一旦我使用了独立的 jar,事情就开始变得更加顺利。

    此外,除了我在问题中列出的步骤之外,我还可以通过执行三件事来让我的库与打包文件一起使用:

  • 分解独立的 jython.jar 并将包含我所有库文件的文件夹复制到 Lib 中,然后创建一个新 jar。这似乎是包含我的库并允许我将所有内容打包到一个 jar 中的最简单方法。
  • 我在阅读 Frank Wierzbicki 在 Why does Jython refuse to find my Java package? 中的回答后发现因为我现在使用的是独立 jar,所以我不能再使用 from java.awt import * 样式的导入。 ,相反,我需要完全指定要导入的每个内容,例如 from java.awt.Font import PLAIN, BOLD, ITALIC .所以我检查了图书馆的导入并修复了少数风格错误的。
  • 现在我将我的库直接添加到 Jar 的 Lib 文件夹中,而不是写 Class-Path: ./myLibrary.jarothermanifest.mf , 我把 Main-Class: org.python.util.JarRunner根据我在我的问题中提到的帖子中 Frank Wierzbicki 的回答:Distributing my Python scripts as JAR files with Jython?

  • 这允许我创建一个包含我想要运行的库和 jython 文件的可双击可执行 jar。

    关于jython - 将 Jython 程序打包到可执行 jar 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16701979/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com