2

我一直在尝试将 jar 转换为 exe。该程序 - jar - 使用蓝牙库“Bluecove”,它是某个目录中的另一个 jar。该程序还使用 Java Swing,通常JFrame和其他东西。该程序在 Netbeans 或 Eclipse 中运行时运行良好。是时候部署它了,因此我需要将其转换为 exe。但我一直无法让最终的可执行文件与“Bluecove”链接。我尝试了JSmoothLaunch4j,但是两者都使用了,尽管我可以完成该过程并创建“exe”,但最终程序没有运行,因为它找不到 Bluecove 类。

关于如何解决这个问题的任何建议?这些转换器都没有关于与库链接的任何文档。任何帮助表示赞赏。

解决方案: 谢谢各位大神解答!我使用 Andrew Thompson 建议的方法来部署我的程序,效果很好。为了创建 JAR,我更喜欢将所有东西都放在一个 JAR 中,正如 Abdullah Shaikh 所建议的那样。我为此使用了 Fat-Jar Eclipse 插件。

4

4 回答 4

4

是时候部署它了,因此我需要将其转换为 exe。

这两种说法放在一起没有意义。我们无法部署 Swing 桌面应用程序。*nix 或 OS X 使用基于 Windows 的可执行文件。部署 Java 桌面应用程序的最佳选择。通常来自使用Java Web Start的网页上的链接。

来自BlueCove 文档:安装

安装

BlueCove 依赖于您的操作系统或蓝牙 USB 设备随附的已安装的本机蓝牙堆栈。

Installation of the binary (already compiled) version of BlueCove is as follows:

  • Download BlueCove binary release
  • Add bluecove.jar to your classpath
  • Also add bluecove-gpl.jar to your classpath if you are running application on Linux

This would imply something like the following. 2 Java Web Start based JNLP extensions:

  1. An extension for the BlueCove main API (bluecove.jar) to support Windows and OS X, as well as the core classes needed for Linux. This 'main' JNLP file would have a resources section specific to Linux, which in turn references the 'Linux only' extension JNLP.
  2. An extension for the Linux specific API (bluecove-gpl.jar) which includes an installer element to pop a license prompt for the user (if needed, this entire extension is necessary only for producing a license prompt). Here is a small demo. of the ExtensionInstallerService that would show a license agreement.

..would this require the user to always have an internet connection when using the application, or is it just the first time activation that requires internet?

The Java Web Start client (the app. that launches an appropriate JVM and your app.) would typically check back with the home server for updates to the application Jars relevant to that OS. Fortunately it is configurable as to when and how the check is done, and whether the application can be run 'off-line' as you require, by specifying an element in the JNLP:

<offline-allowed />

The offline-allowed element (part of the jnlp element) ensures that after initial installation, the app. can be used off-line.

于 2013-02-11T08:22:44.037 回答
2

确保在创建启动器时将 bluecove JAR 添加到类路径中:在 JSmooth设置类路径,在 Launch4j中设置类路径。

于 2013-02-11T07:37:28.137 回答
2

在 jar 中,您需要放置所有依赖的 jar,或者您可以使用 Class-Path 标头为您的 jar 提供清单。

您也可以尝试 fat-jar扩展或One Jar

于 2013-02-11T07:40:45.150 回答
1

要解决此问题,您将所有依赖的 jar 放入最终的 jar 文件中。
在 Eclipse 中,您可以通过以下方式执行此操作:File -> Export -> Java -> Runnable Jar File -> (Select the option) Package required libraries into generated jar
现在使用此 jar 使用您选择的任何 jar 到 exe 转换器创建一个 exe!
希望这可以帮助

于 2013-02-11T07:48:12.720 回答