java - Spring boot - 如何在 Process Builder 中指定 Java 路径
问题描述
我的系统中有 Java 7 作为默认配置。但我必须仅将 Java 8 用于 Spring Boot。
以下命令在我的终端中运行良好。
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)
如何解决问题?
解决方案
我建议创建一个脚本文件(下面的 test.sh),您可以在其中设置 java home 并添加其他命令来运行 spring boot 并使用以下代码从 java 调用该脚本:
String[] args = { "/bin/bash", "test.sh"};
StringBuilder builder = new StringBuilder();
Process p2 = null;
String result = null;
String[] cmd = { "sudo", "-s" };
Runtime.getRuntime().exec(cmd);
p2 = Runtime.getRuntime().exec(args);
BufferedReader reader = new BufferedReader(new
InputStreamReader(p2.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
result = builder.toString();
推荐阅读
- typescript - 将材质 ui 前缀添加到样式化组件的自动化方式
- html - 要创建一堆平铺式按钮,我应该使用
- c++ - ROS 提示,致命错误:ros/ros.h: No such file or directory
- jenkins - 詹金斯管道脚本中的 HTTP NTLM 身份验证
- c - 为什么搜索功能不打印我搜索的元素的位置?
- c++ - 将 uint64_t 的位复制到特定位置的两个 uint64_t
- python - 如何计算给定十进制数的连续数?
- python - 在 Python 中读取 JSON 文件解析对象错误
- spring - Spring MVC应用程序在通过“;”访问时不拦截请求 在路径中
- python - 如何使用 ccxt 为 backtrader 创建 pandasData