当前位置: 首页 > 知识库问答 >
问题:

在没有JDK的PC上执行runnable JAR

谷梁宝
2023-03-14

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

C: \用户\用户名\桌面\实用程序\最新版本

C: \用户\用户名\桌面\实用程序\最新版本

两者都在我的桌面上工作,但如果我尝试在只有JRE版本(1.8以后)的不同机器上运行可执行JAR,它就不会被打开。我尝试了以下链接,但有些链接是为了下载几个安装程序,但所有我不想得到的。有什么办法吗。还是我的可执行JAR有问题?

如何使我的可执行JAR不需要JDK来运行使用特定JRE的JAR文件

清单版本:1.0 Rsrc类路径:。/commons-collections4-4.3。jar poi-3.17。jar poi ooxm l-3.17。jar xmlbeans-3.0.1。jar曲线API-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通用日志-1.2。jar曲线API-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曲线API-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曲线API-1.04。jar junit-4.12。jar log4j-1.2.17。jar xmlbeans-2.6.0。jar ooxml-schemas-1.3。jar Rsrc主类:DataProcessor。数据处理器。应用程序主类:org。日食jdt。内部的jarinjarloader。JARSRCLOADE公司

共有1个答案

越宣
2023-03-14

听起来,您面临的问题不仅仅是没有JDK或不知道目标系统上JRE的位置,还包括您的代码所具有的依赖关系。

您拥有的jar文件在清单文件中包含详细信息,该文件告诉JVM类路径和要加载的主类。如果您查看Rsrc类路径,它是从当前目录添加JAR。如果您发送的是整个文件夹结构,其中包括预期位置中的所有JAR,那么这很好。但它不适用于只有罐。

为了制作一个没有任何额外罐子的罐子,您需要重新包装罐子。有两种常见的方法可以做到这一点

>

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

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

出于这个原因,我个人建议使用JarInJar选项。Spring Boot Maven插件是我认为最简单的

 类似资料:
  • 我制作了一个小snake游戏,并通过Eclipse将其导出到一个可运行的JAR文件中。 但是“普通”的人没有安装,只有可以在下面找到的JRE:http://java.com/en/download/index.jsp 这显然不足以执行JAR。我尝试过很多方法: 在JAR中打包库 在JAR中提取库 使用java 1.7构建 使用java 1.8构建 检查生成路径以确保包含库。

  • 我使用maven enforcer插件只强制执行jdk 1.7(我使用的是java.nio.file)。出于某种原因,maven enforcer插件无法检测JDK1.7。 这是我pom.xml的密码- 这就是我得到的错误- 编辑 mvn执行者:显示信息 显示版本1.7而不是1.6。。。为什么强制检测java 1.6版?

  • 我想执行一个批处理文件 D:\apache-tomcat-6.0。20\apache-tomcat-7.0。30\bin\shutdown。球棒 它位于我的服务器上。 我应该如何编写我的文件?

  • 问题内容: 我有一个用例,其中在Completable中初始化一些全局变量,然后在链的下一步(使用运算符)中使用这些变量。 以下样本详细解释了我的用例 说你有一堂课 我有一个这样的Observable, 首先,我正在做一些初始化工作,我希望操作员仅在完成之后才能开始。 这意味着我希望操作员开始时会初始化。 以下是我对这个可观察的订阅 但是当我运行此代码时,出现错误 表示为null, 在执行 。这里

  • 我需要找到一种方法让我的java程序在没有Java的计算机上运行。我为我的学校做了一个非常简单的调查/回答类型的程序,为了更容易使用,我使用了一个包装器(具体来说是J平滑的)。但是对于没有安装Java的老师来说,这个程序似乎无法执行。有没有包装器允许在没有安装JVM的情况下执行Java代码?我知道将Java(一次编写,随处运行)转换为特定的平台代码的想法非常糟糕,但是对于我的情况来说这是必要的。

  • 嘿,我在POM中做了这个配置。xml文件并行运行测试。但当我使用cmd进行“mvn验证”时,只有一个浏览器正在运行一个功能,而在完成一个功能文件的执行后,另一个功能正在运行。这是我的代码和pom。xml请建议我怎么做? 我正在使用cucumber 这是我的pom.xml代码: 提前感谢。