网站首页 > java教程 正文
出现问题:
此时不应有 Files\Java\jdk1.8.0_92\bin\java.exe""(本地未出现问题,服务器环境出现)
出现原因:
1:环境变量JAVA_HOME配置路径中的空格问题
2:系统环境变量路径首尾出现双引号 " 为多余
解决方法:
1:原路径C:\Program Files\Java\jdk1.8.0_92,需替换为C:\Progra~1\Java\jdk1.8.0_92 ;
2:将相关环境变量路径的首尾双引号 “ 去掉 ;
如:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public static Map<String, String> execute(String directory,String[] cmd){
Map<String, String> result = new HashMap<>();
Process p = null;
try {
ProcessBuilder builder = new ProcessBuilder(cmd);
File file = new File(directory) ;
builder.directory(file);
Map<String, String> env = builder.environment();
env.put("CATALINA_HOME", file.getParent());
env.put("CATALINA_BASE", file.getParent());
logger.info("=: -----------------------");
for(String str : env.keySet()){
if(env.get(str) != null){
env.put(str, env.get(str).replaceAll("Program Files", "PROGRA~1"));
}
logger.info(str+"=: "+env.get(str));
}
logger.info("=: -----------------------");
String javaHome = System.getenv("JAVA_HOME");
if(StringUtils.isNotEmpty(javaHome)) {
javaHome = javaHome.replace("%20", " ").replaceAll("Program Files", "PROGRA~1");
}
env.put("JAVA_HOME", javaHome);
//环境可能是Path 或 PATH
String _Path = env.get("Path");
if(StringUtils.isNotEmpty(_Path)){
env.put("Path", _Path.replaceAll("\"", ""));
}
String _PATH = env.get("PATH");
if(StringUtils.isNotEmpty(_PATH)){
env.put("PATH", _PATH.replaceAll("\"", ""));
}
String _EXECJAVA = env.get("_EXECJAVA");
if(StringUtils.isNotEmpty(_EXECJAVA)){
env.put("_EXECJAVA", _EXECJAVA.replaceAll("\"", ""));
}
String _RUNJAVA = env.get("_RUNJAVA");
if(StringUtils.isNotEmpty(_RUNJAVA)){
env.put("_RUNJAVA", _RUNJAVA.replaceAll("\"", ""));
}
String _RUNJDB = env.get("_RUNJDB");
if(StringUtils.isNotEmpty(_RUNJDB)){
env.put("_RUNJDB", _RUNJDB.replaceAll("\"", ""));
}
for(String str : env.keySet()){
logger.info(str+"=: "+env.get(str));
}
logger.info("正在执行命令...." + builder.directory());
p = builder.start();
logger.info("正在执行命令....");
InputStream errorStream = p.getErrorStream();
ExecutorService exec = Executors.newCachedThreadPool();
Future<String> errorSubmit = exec.submit(new WorkCallable(p, errorStream,"ERROR"));
InputStream correctStream = p.getInputStream();
Future<String> correctSubmit = exec.submit(new WorkCallable(p, correctStream,"STDOUT"));
logger.info("正在执行命令2....");
String errorMsg = errorSubmit.get();
String successMsg = correctSubmit.get();
logger.info(errorMsg);
logger.info(successMsg);
if(StringUtils.isEmpty(errorMsg)) {
result.put("status", "success");
result.put("msg", successMsg);
} else {
result.put("status", "error");
result.put("msg", errorMsg);
}
p.waitFor();
exec.shutdown();
} catch (Exception e) {
result.put("status", "error");
result.put("msg", e.getMessage());
logger.error("执行命令异常,请检查参数",e.getMessage());
}
return result;
}
欢迎工作一到五年的Java工程师朋友们加入Java程序员开发: 721575865
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
猜你喜欢
- 2024-10-05 怎么在Windows系统上设置环境变量?
- 2024-10-05 Dos下系统在当前目录和path环境变量这两者之间寻找程序的优先级
- 2024-10-05 Python 安装与环境变量的配置(python3安装教程环境变量)
- 2024-10-05 Java开发环境搭建(JDK下载安装配置环境变量)
- 2024-10-05 我的电脑图标不见了,怎么打开Windows的环境变量path设置
- 2024-10-05 Python入门系列2-添加Python安装路径到环境变量
- 2024-10-05 JDK怎么安装与配置环境变量(安装jdk1.7并配置环境变量)
- 2024-10-05 配置JDK环境变量的三种方式(配置jdk1.6环境变量)
- 2024-10-05 Nginx命令配置到系统环境变量(nginx命令配置到系统环境变量中)
- 2024-10-05 Tomcat的下载及环境变量配置(tomcat怎样配置环境变量)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)