当前位置: 首页 > 知识库问答 >
问题:

无法运行程序"C:\Program Files\Java\jdk1.8.0_221\jre\bin\java"无效的目录名

漆雕奇逸
2023-03-14

我有一个“从”程序和一个“主”程序。主程序正在执行从程序,然后,从程序正在执行另一个程序(外部程序)。这使得主程序的重新启动成为可能,而不会结束外部程序。但这是我的问题:我可以使用进程构建器从主程序运行从程序,但从程序用他的进程构建器找不到java。让我犯错了吗?

我已经尝试过改变从执行目录和主执行目录。但是没有变化。

硕士的ProcessBuilder

        final String javaCmd = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
        final List<String> bpArgs = new ArrayList<>();
        bpArgs.add(javaCmd);
        bpArgs.add("-jar");
        bpArgs.add(gameServer.getSlavePath());
        bpArgs.add("servers/" + gameServer.getName().toLowerCase() + "/" + serverName);
        bpArgs.add(gameServerVersion.executable);
        final ProcessBuilder pb = new ProcessBuilder(bpArgs);
        pb.directory(new File("").getAbsoluteFile()); // Run into the current directory

        try {
            final Process p = pb.start();
            <...>
        } catch (IOException e) {
            <...>
        }

奴隶的Processbuilder

        final String javaCmd = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
        List<String> bpArgs = new ArrayList<>();
        bpArgs.add(javaCmd);
        // TODO: Add RAM args
        // Game args
        bpArgs.add("-Dcom.mojang.eula.agree=true");
        bpArgs.add("-DIReallyKnowWhatIAmDoingThisUpdate=true");
        bpArgs.add("-jar");
        bpArgs.add(args[1]); // executable JAR file
        log("Starting with arguments >>> " + bpArgs.toString());
        final ProcessBuilder pb = new ProcessBuilder(bpArgs);
        pb.directory(new File("servers/minecraft/" + args[0])); // Run into the game directory

        try {
            p = pb.start();
            <...>
            p.waitFor();
            log("Server stopped with exit code " + p.exitValue());
        } catch (InterruptedException e) {
            <...>
        } catch (IOException e) {
            <...>
        }

这是我的实际输出:

java.io.IOException: Cannot run program "C:\Program Files\Java\jdk1.8.0_221\jre\bin\java" (in directory "servers\minecraft\servers\minecraft\Hellow"): CreateProcess error=267, Invalid directory name
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at eu.gameinbox.svm.slave.MinecraftSlave.main(MinecraftSlave.java:33)
Caused by: java.io.IOException: CreateProcess error=267, Invalid directory name
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)
    at java.lang.ProcessImpl.start(ProcessImpl.java:137)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    ... 1 more

我只想让奴隶的进程构建器工作。谢谢你未来的帮助!

共有1个答案

储仲渊
2023-03-14

我找到问题了!感谢VivekRatanSinha!

服务器位于servers/minecraft/Hellow而不是server/minecraft/Hellow/minecravt

在我的奴隶的进程构建器中,我使用了

pb.directory(new File("servers/minecraft/" + args[0]));

但是 args 0 是总路径,而不是服务器名称!

我只是把它改成了

pb.directory(new File(args[0]));

现在它工作正常。

 类似资料:
  • 我把java的版本从jdk6更新到java7,但是我面临一个严重的问题,每当我在bin目录外执行任何java文件时,它都显示class not found,而在bin目录下执行它时,我却包含了类路径和path,javac编译了java文件,java类也存在于同一个目录下,但是java不能执行类文件,我搜索了一下,得到了类似java-cp的文件。classfilename,但它也会因为说非法参数cp

  • 我在Ubuntu16.04下遇到了Neo4J服务器的问题。我想安装Neo4J的2.3.3版本。现在当我试图启动服务器时,我得到了这个错误: ~sudo/var/lib/neo4j/bin/neo4j start

  • 我知道甚至这个问题已经被提出了几次,但没有找到解决这个问题的方法。我使用的编译命令:。我使用的运行命令: 错误:

  • 我对java完全陌生,我需要运行一个从互联网下载的应用程序。所讨论的应用程序是“spinn3r”客户端,可在以下位置找到:http://code.google.com/p/spinn3r-client/downloads/detail?name=spinn3r-客户-3.4.06。焦油广州 我提取了焦油。gz找到了一个。jar文件。然后我跑: 我得到以下错误: 我该怎么解决这个问题?

  • 我在从命令行运行一个java程序时遇到了严重的麻烦。我觉得我已经接近弄清楚哪里出了问题,但我只是不知所措,我需要帮助。 我正在尝试用以下命令运行一个简单的Hello World程序(在windows上的VSCode中,使用bash terminal): 这根本不起作用,但是,写入文件的完整路径确实起作用,所以像这样的东西是起作用的。 此外,使用F5运行文件也可以正常工作。我希望用命令行参数运行我的

  • 我正在尝试使用此命令运行React本机应用程序 但是,环境路径错误 这是我的环境路径的样子 还有这一个 当我运行命令时仍然收到错误。