程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Java ProcessBuilder:环境设置正确,但仍未找到命令大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Java ProcessBuilder:环境设置正确,但仍未找到命令?

开发过程中遇到Java ProcessBuilder:环境设置正确,但仍未找到命令的问题如何解决?下面主要结合日常开发的经验,给出你关于Java ProcessBuilder:环境设置正确,但仍未找到命令的解决方法建议,希望对你解决Java ProcessBuilder:环境设置正确,但仍未找到命令有所启发或帮助;

我认为,您在ProcessBuilder上设置的环境只是传递给新流程的内容,而不是构建器本身使用的环境。在尝试启动新进程之前,请尝试设置Java进程的环境变量。

编辑:

鉴于可能无法更改Java进程的环境,我相信您必须提出一些解决方法。

当您已经知道要寻找的路径时,您当然可以找出自己的完整路径"my_command",大约是:

String commandString;

if ( new file(env1 + "/my_command").isfile() ) {
  commandString = env1 + "/my_command";
} else
if ( new file(env2 + "/my_command").isfile() ) {
  commandString = env2 + "/my_command";
}

ProcessBuilder pb = new ProcessBuilder(commandString, file, output);

但是,如果"my_command"可能已经在用户PATH元素之一中,则可能是不切实际的。

解决方法

我在开发的Eclipse插件上使用Java的ProcessBuilder遇到麻烦。我在调用start()方法之前正确设置了环境,但是当我运行程序时,它总是返回命令未找到错误。

当我通过命令行调用命令时,它可以完美运行。

当我根据需要使用环境启动Eclipse时,找到了命令,程序运行正常。

仅当我以编程方式设置环境时,程序才会失败。

这是我所拥有的:

ProcessBuilder pb = new ProcessBuilder("my_command",file,output);
Map<String,String> env = pb.environment();
env.put("PATH",env.get("PATH") + File.pathSeparator + env1 + File.pathSeparator + env2);
Process p = pb.start();
...

在那里,env1而且env2是我想要添加到PATH变量的路径&Hellip;

该代码有什么问题?

先感谢您!

大佬总结

以上是大佬教程为你收集整理的Java ProcessBuilder:环境设置正确,但仍未找到命令全部内容,希望文章能够帮你解决Java ProcessBuilder:环境设置正确,但仍未找到命令所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。