helloworld Asked:2020-02-10 16:33:54 +0000 UTC2020-02-10 16:33:54 +0000 UTC 2020-02-10 16:33:54 +0000 UTC Java 可执行文件 772 问题是,如果你创建一个.jar 或.exe 可执行文件,它会在没有JVM 且没有安装JDK 和JRE 的计算机上运行吗? jvm 3 个回答 Voted Barmaley 2020-02-10T18:14:03Z2020-02-10T18:14:03Z 不,它不会工作。 你想好了吗? 有打包程序将 JRE / JVM 版本打包到生成的 EXE 中,jar 将在其中启动。 例如ExcelsiorJET - 然而,它是商业的,但如果你搜索,我认为有免费的。 Best Answer Mikhail Grebenev 2020-02-10T21:25:07Z2020-02-10T21:25:07Z 因为 jar,原则上是离不开JVM的(因为jar是一组字节码形式的类,而不是可执行二进制文件形式的类),那么我们将你的问题表述为:如何打包你的.jar项目到一个 .exe 文件和 JVM 中。这样你的项目就可以在不预装JVM的情况下启动和运行? 在 stackoverflow 上描述了一个关于交叉launch4j和JVM(即)的成功实验。JRE 我分享了一个链接:how to pack your JAR project and JRE into one EXE file via launch4j。 我从链接翻译答案: 1.将您的应用程序和 JRE 打包到一个 ZIP 压缩包中,目录结构为: containerFolder |- jre |-bin (здесь лежит java.exe из состава JRE) |-lib |- cfg (папка для сохранения user-конфигурации, если нужно) |- bin (Ваше приложение с .exe и вашим jar-файлом и другими Вашими внешними файлами из проекта) 2.在launch4j的xml文件中,按以下方式配置JRE: <jre> <path>../jre</path> <opt>-DgvSIG.confDir=../cfg</opt> </jre> 诀窍是没有指定 java.exe 文件的路径。java.exe 的路径是相对于.exe 文件的位置。 在此示例中,作为 JRE,使用标准安装的 JRE 引擎的常规副本(例如:C:\Program Files\Java\jre1.8.0_121)。 是的,Launch4j是免费的,并且拥有非常民主的BSD 3-Clause License。 Riĥard Brugekĥaim 2020-02-10T16:41:12Z2020-02-10T16:41:12Z 不,它不会工作。只有一种选择。exe 中的某些打包程序可能会将其链接到本地 jvm。也就是说,除了 exe 之外,您还必须携带 jre 文件夹。
你想好了吗?
有打包程序将 JRE / JVM 版本打包到生成的 EXE 中,jar 将在其中启动。
例如ExcelsiorJET - 然而,它是商业的,但如果你搜索,我认为有免费的。
因为 jar,原则上是离不开JVM的(因为jar是一组字节码形式的类,而不是可执行二进制文件形式的类),那么我们将你的问题表述为:如何打包你的.jar项目到一个 .exe 文件和 JVM 中。这样你的项目就可以在不预装JVM的情况下启动和运行?
在 stackoverflow 上描述了一个关于交叉launch4j和
JVM(即)的成功实验。JRE我分享了一个链接:how to pack your JAR project and JRE into one EXE file via launch4j。
我从链接翻译答案:
1.将您的应用程序和 JRE 打包到一个 ZIP 压缩包中,目录结构为:
2.在launch4j的xml文件中,按以下方式配置JRE:
诀窍是没有指定 java.exe 文件的路径。java.exe 的路径是相对于.exe 文件的位置。
在此示例中,作为 JRE,使用标准安装的 JRE 引擎的常规副本(例如:C:\Program Files\Java\jre1.8.0_121)。
是的,Launch4j是免费的,并且拥有非常民主的BSD 3-Clause License。
不,它不会工作。只有一种选择。exe 中的某些打包程序可能会将其链接到本地 jvm。也就是说,除了 exe 之外,您还必须携带 jre 文件夹。