通过eclipse创建一个包含.exe文件的可运行JAR

时间:2010-09-13 03:09:22

标签: java eclipse file jar runnable

嘿伙计们 - 我在网上浏览了大量的论坛,并询问了许多专业的Java开发人员,但我无法找到足够的帮助来创建我目前正在完成的财务应用程序的独立可运行jar文件。该应用程序使用两个外部程序;一个名为convert的ImageMagick文件转换程序和一个名为gocr045的OCR程序。我通过eclipse开发了这个应用程序,并尝试多次使用eclipse的自动化runnable jar文件创建向导打包内容。一切都适用于我的机器和我的应用程序功能,但由于某种原因,只要应用程序在另一台计算机上运行它编译和GUI显示,但两个外部功能不起作用。我已经在其他机器上安装了这些功能,但到目前为止,我发现此问题的唯一解决方法是通过eclipse在机器上手动创建可运行的jar。遗憾的是,这不会起作用,因为应用程序将在完成后进行商业化,我无法安装eclipse,然后为购买它的每个用户安装应用程序。我怀疑这是一个微不足道的问题,像你这样的Java专家希望能够立刻为我解决它。是否可能与签署jar文件有关?

谢谢,我希望很快能收到你的回复,

Mark Kogan KoganApps(www.koganapps.com)

3 个答案:

答案 0 :(得分:0)

是否已将单独的exes添加到您计算机上的PATH中?如果在调用Runtime.exec()方法时未指定exe的完整路径,则可能是从系统路径中获取该位置。

我会

  1. 确认位于相对于jar位置的已知位置的exes
  2. Runtime.exec()方法使用此已知的相对位置
  3. 确保exes不会被放在罐子里面(我认为它不会起作用)
  4. 我不认为签约会与它有任何关系。

答案 1 :(得分:0)

Rafe-最终的目标是让应用程序在Windows和Mac上运行。我将使用某种外部软件将mac上的exe文件转换为将在mac os x上运行的文件。随后,我将在这些转换后的文件上调用Runtime.exec()方法

迈克 - 我怀疑是这种情况,因为我没有指定外部程序的直接路径,并且当jar没有在我的计算机上运行时可能会推断出系统路径。该应用程序包含一个包装在JFrame中的JApplet;小程序的安全限制是否与我遇到的问题有关?当然,我的exes位于jar外部的一个外部文件夹中,因为ClassLoader无法在实例化的同一个jar文件中运行外部程序

感谢帮助人员,我会尽快回复你的结果 - 希望现在能够解决问题

答案 2 :(得分:0)

正如您所说there is a JApplet wrapped in a JFrame所以它可能是一个安全例外。通常,当您在系统上安装了JDK并且使用的是eclipse时,它会在JDK文件夹中获取JRE。一旦你将它捆绑为一个可运行的jar并尝试在另一个系统上执行它,那么它有可能从java.exe获取c:\program files\java\jre\bin ..如果是这种情况那么你的应用就赢了'除非有适当的签名并给予所需的访问权限,否则无法工作。

因此,请执行以下检查:

  1. 正在您的系统上使用哪个jre。是在jdk内部还是c:\program files\java\jre\bin
  2. 在您部署应用的其他系统上检查相同内容
  3. 注意:我假设您已设置了所有必要的路径变量。

    <强>建议

    1. 如果您有权访问ImageMagickJOCR的源代码,请从中创建一个dll并使用JNAhttps://jna.dev.java.net/)来调用它们。
    2. 使用JPanel代替JApplet