Java 从另一个Jar运行Jar不会';导出时无法工作

Java 从另一个Jar运行Jar不会';导出时无法工作,java,jar,Java,Jar,我已经读了几个小时关于这个主题的书: 我想做(并且成功地做)的是从我的代码中运行一个可运行的jar,问题是,当我将代码导出到一个可运行的jar中时,它就停止工作了 从我的编译器工作的方法是: ProcessBuilder pb = new ProcessBuilder("java", "-jar", "JAR I'M LOADING"); pb.start 这就是我尝试过的: 我已经用我想要运行的jar创建了一个数据包,并且我创建了一个静态JarLoader类,我在其中执行以下操作: publ

我已经读了几个小时关于这个主题的书:

我想做(并且成功地做)的是从我的代码中运行一个可运行的jar,问题是,当我将代码导出到一个可运行的jar中时,它就停止工作了

从我的编译器工作的方法是:

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "JAR I'M LOADING");
pb.start
这就是我尝试过的:

我已经用我想要运行的jar创建了一个数据包,并且我创建了一个静态JarLoader类,我在其中执行以下操作:

public class JarLoader {

    static JarLoader jl = new JarLoader();

    public static ProcessBuilder loadJar(){
        return new  ProcessBuilder("java", "-jar", jl.getClass().getResource("JAR I'M TRYING TO LOAD").toString());

}
当然,我将运行jar的方法切换为:

ProcessBuilder pb = JarLoader.loadJar();
pb.start();
这种技术与其他类型的资源(如图像)配合得很好,但与jar不配合


我错过什么了吗?(是的,我确实将包含Jar和JarLoader的文件夹添加到了项目的源代码中)

您当前使用的技术允许您访问已经打包在Jar文件中的资源。但是这些资源仅在应用程序内部是一致的,而不是来自应用程序外部

当您使用
java-JAR…
执行JAR文件时,这是一个正在执行的外部应用程序,它不知道如何从另一个JAR中检索JAR。您需要将其临时写入磁盘,然后运行临时JAR文件

您需要:

  • 将资源作为流打开
  • 用于在某处创建临时JAR文件
  • 用于从资源流复制到临时文件
  • 用于确保在主(主机)应用程序终止时清理临时文件
  • 使用
    java-jar tempfile.jar
    或任何您调用的工具执行临时文件

  • 您正在加载的jar在另一个jar中?是的,我有一个大学项目,我需要加载一个我从另一个jar中创建的项目,这两个项目都是可运行的jar,首先将jar文件跟踪到磁盘。或者将第一个Jar作为库包含到第二个Jar中,然后直接加载它的类……这两个项目都运行一个swing GUI,所以我希望它们都运行在不同的jvm上,如果可能的话,这就是为什么我从另一个Jar运行一个Jar的原因。您可以链接到一些文档,解释如何临时将Jar写入磁盘吗?是用IOstreams完成的吗?