【问题标题】:How to create a Java application which can be run by a click?如何创建一个单击即可运行的 Java 应用程序?
【发布时间】:2011-01-18 07:24:12
【问题描述】:

我想要一个可以轻松启动的 Java 应用程序。

到目前为止,我已经设法创建了一个 jar 文件,但我还没有看到任何优势。在我通过“java HelloWorldSwing”运行我的应用程序之前,现在我使用“java -jar HelloWorldSwing.jar”(这比前面的命令更复杂,据我所知,使用 jar 文件需要存在 * .mf 文件在同一目录中)。

我想有以下两种情况之一:

  1. 只有一个文件,可以复制到另一个操作系统,只需在文件浏览器中单击此文件即可启动项目(此时如果单击我的 jar 文件 Ubuntu 开始提取存档(因为 jar 是一个存档,我知道)。

  2. 创建一个可以放在桌面上的象形图,单击它会启动我的 Java 程序。

【问题讨论】:

  • "据我了解,使用 jar 文件需要在同一目录中存在 *.mf 文件" 不,您的清单文件应该与 jar 一起放入 jar 本身的-m manifestfile 命令行选项

标签: java jar


【解决方案1】:

这里有一些可以帮助你的链接..

JSmooth 是一个 Java 可执行包装器。它创建本地 Windows 启动器

http://jsmooth.sourceforge.net/

跨平台 Java 可执行包装器

http://launch4j.sourceforge.net/


http://www.captain.at/programming/java/executable-java-application.php

【讨论】:

    【解决方案2】:
    【解决方案3】:

    您可以创建一个可执行的 jar 文件,如下所述:

    http://csdl.ics.hawaii.edu/~johnson/613f99/modules/04/jar-files.html

    如果操作系统和用户的安全设置允许,用户可以在文件浏览器中单击它并启动主类。

    【讨论】:

    • 我只是按照分步说明进行操作。最后我得到了一个可以成功运行的 jar 文件。但是,当我在文件浏览器中打开包含 jar 文件的文件夹时,我将 jar 文件视为存档。双击存档启动存档的提取。
    • 不幸的是,对于拒绝自动运行内容的文件浏览器,您真的无能为力(毕竟,这通常是一个非常好的主意)。即使您将整个 JRE 和您的程序编译成一个巨大的 .EXE,现在文件管理器也很可能拒绝运行它,因为它是一个“不安全的下载文件”,除非您设法让您的应用程序获得操作系统供应商的认证。这是一场最终没有人能赢的军备竞赛。
    【解决方案4】:

    制作一个没有依赖关系的jar 可执行文件相对容易。您基本上只需要在MANIFEST 中指定要使用的主类。然后可以使用java -jar ExecutableJar.jar 启动它,但大多数操作系统在这种情况下都支持双击。

    制作一个依赖于其他 jar 的 jar 可执行文件更加棘手。您可以在MANIFEST 中指定类路径,但这仍然意味着您需要复制多个 jar 来分发您的应用程序。另一种方法是在主 jar 中“打包”依赖 jar。

    您可以使用 ma​​venmaven-assembly-plugin 完成所有这些操作。使用 jar-with-dependencies 预配置的 descriptor

    <configuration>
         <descriptorRefs>
                 <descriptorRef>jar-with-dependencies</descriptorRef>
         </descriptorRefs>
    </configuration>
    

    主类可以用类似这样的方式指定:

    <archive>
         <manifest>
            <mainClass>org.company.MyClass</mainClass>
         </manifest>
     </archive>
    

    编辑:完整的pom.xml 可以在this question 中找到。

    【讨论】:

      【解决方案5】:

      您必须创建一个可执行的 jar,并在 jar 的清单文件中将您的主类(即具有 main() 方法的公共类)作为主类。因此,当prople双击它或在命令控制台中键入:jar“你的jar名称”时,它们就会执行它。

      【讨论】:

        【解决方案6】:

        Launch4J 允许您使 JAR 可在许多平台上启动。

        【讨论】:

          【解决方案7】:

          它叫WebStart

          但是,它并不完全符合您的描述。它没有提供应该存在的自打包解决方案。

          PS。我个人认为可执行jar是个笑话,你无法控制vmargs,不能有一个好的图标,甚至在它被解包并尝试执行之前你甚至都不知道它是可执行的。

          【讨论】:

            【解决方案8】:

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-09-03
              • 2011-02-25
              • 2020-07-24
              • 1970-01-01
              • 2010-11-27
              • 1970-01-01
              • 2011-03-20
              • 1970-01-01
              相关资源
              最近更新 更多