通过Java代码运行jar

通过Java代码运行jar,java,jar,Java,Jar,所以,我在这里做了一些研究,但是这个东西显然不能工作/运行JAR文件 您需要提供Java可执行文件的完整路径,而不仅仅是“Java” 假设所讨论的程序表现良好,您可以使用反射在jar的主类上调用main方法,而无需启动新的JVM 注意jar路径中的空格。这意味着,在您构建的命令中,它将被视为两个参数: final String dir = "C:\\Users\\theo\\Desktop\\1.6 test\\craftbukkit.jar"; Process proc = Runtime.g

所以,我在这里做了一些研究,但是这个东西显然不能工作/运行JAR文件

  • 您需要提供Java可执行文件的完整路径,而不仅仅是“Java”
  • 假设所讨论的程序表现良好,您可以使用反射在jar的主类上调用
    main
    方法,而无需启动新的JVM

  • 注意jar路径中的空格。这意味着,在您构建的命令中,它将被视为两个参数:

    final String dir = "C:\\Users\\theo\\Desktop\\1.6 test\\craftbukkit.jar";
    Process proc = Runtime.getRuntime()
        .exec("java -Xmx1024M -jar "+ dir +" -o true PAUSE");
    
    尝试引用路径以生成如下命令:

    java -Xmx1024M -jar C:\Users\theo\Desktop\1.6 test\craftbukkit.jar -o true PAUSE
    

    运行JAR文件?您可以在主方法为入口点的位置运行程序。读取(并实现)的所有建议。这可能会解决问题。如果没有,它应该提供更多关于失败原因的信息。然后忽略它引用的
    exec
    ,并使用
    ProcessBuilder
    构建
    流程。还可以将
    字符串arg
    分解为
    字符串[]args
    ,以说明本身包含空格的参数。完整路径完成。我想要后台执行,因为我收到了iputstream。现在它说无法访问JARFILE您可能必须保护路径中的空间(现在,它看起来像
    C:\\Users\\theo\\Desktop\\1.6
    test\\craftbukkit.jar
    是独立的参数)。也修复了这个问题。现在我甚至没有收到任何错误,也没有收到任何反馈:)好吧,我也试过这么做,重命名了文件夹之类的东西。似乎工作,但我没有收到任何信号,它正在工作,只有鼠标上的加载标志
    java -Xmx1024M -jar "C:\Users\theo\Desktop\1.6 test\craftbukkit.jar" -o true PAUSE