gpt4 book ai didi

java - 无法通过Java代码执行java -jar命令

转载 作者:行者123 更新时间:2023-12-02 09:21:47 26 4
gpt4 key购买 nike

我有一个非常基本的Spring Boot应用JAR暴露 API 。我想做的就是开始JAR使用以下代码以编程方式。

问题是我没有看到任何输出或异常,但 JAR 没有启动。我尝试将端口更改为尚未绑定(bind)的端口,但仍然无法工作。

但是,当我手动进入cmd时和cd进入C:\LDC\dev-server目录并执行 java -jar todo-rest-app-0.0.1-SNAPSHOT.jar --server.port=8081应用程序启动,我可以使用 http://localhost:8080/todos 访问 API网址。

Main.java

public class Main {

public static void main(String[] args) throws IOException, InterruptedException {
new Main ().executeJar(new File("todo-rest-app-0.0.1-SNAPSHOT.jar"));
}

private void executeJar(File artifact) throws IOException, InterruptedException {
String jarName = "C:\\LDC\\dev-server\\" + artifact.getName();
System.out.println("jarName: " + jarName);
Process ps = Runtime.getRuntime().exec("java -jar " + jarName + " --server.port=8081");
ps.waitFor();
java.io.InputStream is = ps.getInputStream();
byte b[] = new byte[is.available()];
is.read(b, 0, b.length);
System.out.println(new String(b));
}

}

输出:

jarName: C:\LDC\dev-server\todo-rest-app-0.0.4-SNAPSHOT.jar
Process finished with exit code -1

最佳答案

基于 SO 链接 Execute .jar file from a Java program由 @Sabmit 提供,我发布了对我有用的解决方案。

private void executeJar2(File artifact) throws IOException, InterruptedException {
ProcessBuilder pb = new ProcessBuilder("C:\\JDK\\1.8.0.181\\bin\\java", "-jar", artifact.getName(), "--server.port=8081");
pb.directory(new File("C:\\LDC\\dev-server\\"));
Process p = pb.start();
}

关于java - 无法通过Java代码执行java -jar命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58644788/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com