Spring boot - 如何在 Process Builder 中指定 Java 路径

我的系统中有 Java 7 作为默认配置。但是我必须仅在春季启动时使用 Java 8。


以下命令在我的终端中运行良好。


ubuntu@karthick:~$ JAVA_HOME=/opt/jdk1.8.0_181 mvn spring-boot:run

但是当我尝试从 Process Builder 执行它时,它显示错误。


代码:


ProcessBuilder pb = new ProcessBuilder("JAVA_HOME=/opt/jdk1.8.0_181", "mvn", "spring-boot:run");

pb.directory(new File("/home/ubuntu/project/springbootexample"));

Process p = pb.start();

我收到以下错误


error=2, No such file or directory. Stacktrace follows:

java.io.IOException: error=2, No such file or directory

    at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)

    at java.lang.ProcessImpl.start(ProcessImpl.java:130)

    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)

    ...

    at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198)

    at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)

    at net.bull.javamelody.JspWrapper.invoke(JspWrapper.java:150)

    at net.bull.javamelody.JdbcWrapper$DelegatingInvocationHandler.invoke(JdbcWrapper.java:281)

    at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:202)

    at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:180)

    at com.brandseye.cors.CorsFilter.doFilter(CorsFilter.java:82)

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

    at java.lang.Thread.run(Thread.java:744)

如何解决问题?


肥皂起泡泡
浏览 329回答 1
1回答

守候你守候我

我建议创建一个脚本文件(下面的 test.sh),您可以在其中设置 java home 并添加其他命令来运行 spring boot 并使用以下代码从 java 调用该脚本:&nbsp; String[] args = { "/bin/bash", "test.sh"};&nbsp; &nbsp; &nbsp; &nbsp; StringBuilder builder = new StringBuilder();&nbsp; &nbsp; &nbsp; &nbsp; Process p2 = null;&nbsp; &nbsp; &nbsp; &nbsp; String result = null;&nbsp; &nbsp; &nbsp; &nbsp; String[] cmd = { "sudo", "-s" };&nbsp; &nbsp; &nbsp; &nbsp; Runtime.getRuntime().exec(cmd);&nbsp; &nbsp; &nbsp; &nbsp; p2 = Runtime.getRuntime().exec(args);&nbsp; &nbsp; &nbsp; &nbsp; BufferedReader reader = new BufferedReader(new&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;InputStreamReader(p2.getInputStream()));&nbsp; &nbsp; &nbsp; &nbsp; String line;&nbsp; &nbsp; &nbsp; &nbsp; while ((line = reader.readLine()) != null) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; builder.append(line);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; result = builder.toString();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java