无法使用processbuilder运行java命令

无法使用processbuilder运行java命令,java,processbuilder,Java,Processbuilder,我正在尝试从另一个java程序运行java类文件 这是我的节目: import java.io.File; import java.io.IOException; import java.lang.ProcessBuilder.Redirect; public class RunJava { public static void main(String[] args) throws IOException { ProcessBuilder pb = new Process

我正在尝试从另一个java程序运行java类文件

这是我的节目:

import java.io.File;
import java.io.IOException;
import java.lang.ProcessBuilder.Redirect;
public class RunJava {
    public static void main(String[] args) throws IOException {
        ProcessBuilder pb = new ProcessBuilder("java","HelloWorld");
        pb.directory(new File("/home/local/prasanth-8508"));
        pb.redirectOutput(Redirect.INHERIT);
        pb.redirectError(Redirect.INHERIT);
        pb.start();
    }
}
运行此程序后,出现以下错误:

线程“main”java.io.IOException中出现异常:无法运行程序“java”

但是,当我从终端运行任何java命令时,它们都工作得非常好

我发现的另一件事是,当我在终端中运行命令:
echo$PATH
并使用ProcessBuilder(
ProcessBuilderPB=newProcessBuilder(“bash”)、“-c”、“echo$PATH”);
)时,它们显示了不同的输出。i、 e ProcessBuilder命令中不显示jdk/bin的路径


我如何解决这个问题?

是的,正如@MichaelBerry所说,您可能没有访问它的权限,但除此之外,我还想包括:

在这里,您已经从非常好的开始,只需要在processBuilder的构造函数中修改一些小东西,比如参数
-jar

我已经发布了下面的示例代码,它可以帮助您理解它是如何工作的

ProcessBuilder pb=newprocessbuilder(“/path/to/java”、“-jar”、“your.jar”);
目录(新文件(“首选/工作/目录”);
进程p=pb.start();

确实存在
/home/local/prasanth-8508
吗?您有权限访问它吗?是的,Micheal,该目录存在。否则我会有一个文件没有这样的文件错误。我也有访问它的权限。这是不正确的-如果在这种情况下目录不存在,您将得到您指定的错误(并且根据您的平台,在该异常之后可能会有一个限定符来声明目录也无效)检查
java
是否在您的路径上将是我的下一个调用端口。我不运行任何jar文件。我想运行一个类文件。是的,通过指定java的绝对路径,它可以工作。但是,如果我只给出“java”而不是绝对/path/to/java,您知道它为什么不起作用吗?您可能需要在系统中为java bin目录设置环境变量path,为java lib目录设置CLASSPATH,而不需要指定java的绝对路径。