Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在PC上执行runnable JAR';它没有JDK_Java - Fatal编程技术网

Java 在PC上执行runnable JAR';它没有JDK

Java 在PC上执行runnable JAR';它没有JDK,java,Java,我有一个可执行的JAR。在我的终端安装了JDK之后,我将发出以下命令,从命令提示符运行我的exe JAR 1使用JRE:- C:\Users\userName\Desktop\Utility\latest>“C:\Program Files\Java\jre1.8.0\U 161\bin\Java.exe”-jar Utility.jar 2使用JDK C:\Users\userName\Desktop\Utility\latest>“C:\Program Files\Java\jdk1.8.0

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

1使用JRE:- C:\Users\userName\Desktop\Utility\latest>“C:\Program Files\Java\jre1.8.0\U 161\bin\Java.exe”-jar Utility.jar

2使用JDK C:\Users\userName\Desktop\Utility\latest>“C:\Program Files\Java\jdk1.8.0\U 161\bin\javaw.exe”-jar Utility.jar

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

清单版本:1.0 Rsrc类路径:./commons-collections4-4.3.jar-poi-3.17.jar-poi-ooxm l-3.17.jar xmlbeans-3.0.1.jar curvesapi-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日志 ging-1.2.jar curvesapi-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 curvesapi-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 curvesapi-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
Main类:org.eclipse.jdt.internal.jarinjarloader.jarrscloade

听起来您面临的问题不仅仅是没有JDK或者不知道目标系统上的JRE在哪里,而是您还没有包含代码所具有的依赖项

您拥有的jar文件在清单文件中包含详细信息,该文件告诉JVM类路径和要加载的主类。如果查看
Rsrc类路径
,则需要从当前目录添加jar。如果您发送的是包含预期位置中所有jar的整个文件夹结构,则可以这样做。但它不能只与罐子一起工作

为了使单个jar能够在没有任何额外jar的情况下运行,您需要重新打包jar。有两种常见的方法可以做到这一点

  • UberJar—将项目的类与从所有依赖项提取的类组合到一个jar中

  • JarInJar—将您的jar和所有依赖jar放在一个jar中,并使用自定义类加载器从jar中的jar加载类

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


    我个人建议为此使用JarInJar选项。如果已经设置了java home,则无需给出完整路径。但即使没有JDK,它也无法在其他系统的其他桌面上工作,请转到命令提示符并键入
    java-jar utility.jar
    ,然后查看线程“main”中的任何错误。异常java.lang.NoClassDefFoundError:org/apache/log4j/Logger at DataProcessor.DataProcessor.App.(App.java:73)根据上述命令,使用
    -cp
    选项并给出log4j jar文件的路径,或将log4j文件复制到实用程序jar文件所在的相同位置。