使用外部库来执行jar

时间:2013-02-11 07:32:15

标签: java swing deployment exe executable-jar

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

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

解决方案: 谢谢大家的答案!我使用了Andrew Thompson建议的方法来部署我的程序,该程序运行得非常好。为了创建JAR,我倾向于将所有东西放在一个JAR中,正如Abdullah Shaikh所建议的那样。我使用了Fat-Jar Eclipse插件。

4 个答案:

答案 0 :(得分:4)

  

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

这两个陈述没有任何意义。我们无法部署Swing桌面应用。使用基于Windows的可执行文件到* nix或OS X.部署Java桌面应用程序的最佳选择。通常来自使用Java Web Start的网页上的链接。

来自BlueCove Documentation: Installation

  

安装

     

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

     

安装BlueCove的二进制(已编译)版本如下:

     
      
  • 下载BlueCove二进制版本
  •   
  • bluecove.jar添加到您的类路径
  •   
  • 如果您在 Linux
  • 上运行应用程序,还要将 bluecove-gpl.jar 添加到您的类路径中   

这意味着以下内容。 2基于Java Web Start的JNLP扩展:

  1. 支持Windows和OS X的BlueCove主API(bluecove.jar)的扩展,以及Linux所需的核心类。这个“主”JNLP文件将有一个特定于Linux 的资源部分,后者又引用了“仅限Linux”的扩展JNLP。
  2. Linux特定API(bluecove-gpl.jar)的扩展,其中包含一个安装程序元素,用于为用户弹出许可证提示(如果需要,仅在生成许可证提示时才需要此整个扩展名)。这是一个显示许可协议的小demo. of the ExtensionInstallerService
  3.   

    ..这会要求用户在使用应用程序时始终具有互联网连接,还是仅仅是第一次激活需要互联网?

    Java Web Start客户端(启动适当的JVM和您的应用程序的应用程序。)通常会与主服务器一起检查与该操作系统相关的应用程序Jars的更新。幸运的是,它可以配置何时以及如何完成检查,以及是否可以根据需要“离线”运行应用程序,方法是在JNLP中指定一个元素:

    <offline-allowed />
    

    offline-allowed元素(jnlp element的一部分)确保在初始安装后应用。可以脱机使用。

答案 1 :(得分:2)

确保在创建启动器时将bluecove JAR添加到类路径中:setting classpath in JSmoothsetting classpath in Launch4j

答案 2 :(得分:2)

在jar中,您需要放置所有相关的jar,或者您可以使用Class-Path标头为jar启用清单。

你也可以试试 fat-jar分机或One Jar

答案 3 :(得分:1)

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