2

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

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

马克·科根 KoganApps (www.koganapps.com)

4

3 回答 3

0

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

我会

  1. 确认 exes 位于相对于 jar 位置的已知位置
  2. Runtime.exec() 方法使用这个已知的相对位置
  3. 确保 exe 没有放在 jar 中(我认为如果有的话它不会起作用)

我不认为签约与它有任何关系。

于 2010-09-13T04:32:05.840 回答
0

正如您所说there is a JApplet wrapped in a JFrame,这可能是一个安全例外。通常,当您在系统上安装了 JDK 并使用 eclipse 时,它​​会在 JDK 文件夹中获取 JRE。一旦你将它捆绑为一个可运行的 jar 并尝试在不同的系统上执行它,那么它就有可能java.exec:\program files\java\jre\bin..权利。

因此,请执行以下检查:

  1. 您的系统上正在使用哪个 jre。不管是在jdk里面还是c:\program files\java\jre\bin
  2. 在您部署应用程序的其他系统上检查相同的内容

注意:我假设您已经设置了所有必要的路径变量。

建议

  1. 如果您可以访问源代码,ImageMagick然后JOCR从中制作一个 dll 并使用JNA( https://jna.dev.java.net/) 调用它们。
  2. 使用 JPanel 代替 JApplet
于 2010-09-23T08:03:48.457 回答
0

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

Mike - 我怀疑是这种情况,因为我没有指定外部程序的直接路径,并且当 jar 未在我的计算机上运行时可能会推断出系统路径。然而,该应用程序由一个包裹在 JFrame 中的 JApplet 组成;小程序上的安全限制与我遇到的问题有什么关系吗?而且,当然,我的 exe 位于 jar 外部的外部文件夹中,从该文件夹中调用它们,因为 ClassLoader 无法在实例化的同一 jar 文件中运行外部程序

感谢您的帮助,我会尽快回复您的结果-希望现在可以解决

于 2010-09-13T11:57:20.917 回答