java - 在没有 JDK 的 PC 上执行可运行的 JAR

标签 java

我有一个可执行的 JAR。 Ofcouuser 我已经安装了 JDK,我给出以下命令从命令提示符运行我的 exe JAR。

1 使用 JRE :-

C:\Users\用户名\Desktop\Utility\latest>“C:\Program Files\Java\jre1.8.0_161\bin\java.exe”-jar Utility.jar

2 使用JDK

C:\Users\用户名\Desktop\Utility\latest>“C:\Program Files\Java\jdk1.8.0_161\bin\javaw.exe”-jar Utility.jar

两者都在我的桌面上运行,但是如果我尝试 #1 在只有 JRE 版本(1.8 及以上)的另一台计算机上运行可执行 JAR,则它不会被打开。 我尝试了以下链接,但有些链接说要下载一些安装程序,但我不想得到它。有什么办法吗。或者我的可执行 JAR 存在问题?

How can I make my executable JAR not need JDK to run Run a JAR file using a specific JRE

list 版本:1.0 Rsrc-Class-Path: ./commons-collections4-4.3.jar poi-3.17.jar poi-ooxm l-3.17.jar xmlbeans-3.0.1.jar curveapi-1.06.jar poi-ooxml-schemas-3。 17.jar poi-examples-3.17.jar poi-excelant-3.17.jar poi-scratchpad-3.1 7.jar commons-codec-1.10.jar commons-collections4-4.1.jar commons-log ging-1.2.jar curveapi-1.04.jar junit-4.12.jar log4j-1.2.17.jar xmlbe ans-2.6.0.jar ooxml-schemas-1.3.jar 类路径:./commons-collections4-4.3.jar poi-3.17.jar poi-ooxml-3.17.jar xmlbeans-3.0.1.jar curveapi-1.06.jar poi-ooxml-schemas-3.17.jar poi-examples-3.17。 jar poi-excelant-3.17.jar poi-scratchpad-3.17.jar commons-codec-1.10.jar commons-collections4-4.1.jar commons-logging-1.2.jar curveapi-1.04.jar junit-4.12.jar log4j-1.2.17.jar xmlbeans-2.6.0.jar ooxml-schemas-1.3.jar Rsrc-主类:DataProcessor.DataProcessor.App 主类:org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoade

最佳答案

听起来您遇到的问题不仅仅是没有 JDK 或不知道目标系统上的 JRE 位于何处,还在于您没有包含代码所具有的依赖项。

您拥有的 jar 文件包含 list 文件中的详细信息,该文件告诉 JVM 类路径和要加载的主类。如果您查看Rsrc-Class-Path,它会从当前目录添加 jar。如果您要发送包含预期位置中所有 jar 的整个文件夹结构,这很好。但它不适用于 jar 。

为了制作一个无需任何其他 jar 即可运行的 jar,您需要重新打包 jar。有两种常见的方法可以做到这一点

  1. UberJar - 项目的类与从所有依赖项中提取的类组合到一个 jar 中

  2. JarInJar - 将您的 jar 和所有依赖 jar 放入 jar 中,并使用自定义类加载器从 jar 内的 jar 加载类。

我不确定您使用的是什么构建工具,但对于 Maven 来说 Shade Plugin将创建一个 UberJar。

我个人建议使用 JarInJar 选项 reasonSpring Boot Maven Plugin这是我认为最简单的

关于java - 在没有 JDK 的 PC 上执行可运行的 JAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58940736/

相关文章:

java - java中如何读取这种文本文件

java - 多部分表单 POST 提交请求获取损坏的文件

java - Spring Boot Azure CosmosDB NoClassDefFoundError : Could not initialize class com. azure.data.cosmos.internal.directconnectivity.rntbd.RntbdConstants

java - 目录结构错误的 NoClassDefFoundError 解决方法

java - AdView 不再具有 setGravity?

java - java中读取文本文件时出现空指针

java - 在 Java 中继续之前等待进程完成

java - 使用 JSP 和 Spring 的 AJAX 搜索

java - 将图像旋转90度说明

java - 我的 Android 应用程序关闭