java.io.IOException : Cannot run program ".\bin\catalina.bat" - CreateProcess error=2, 系统找不到指定的文件

标签 java windows batch-file tomcat

尝试使用 Java 启动 Tomcat 进程时出现以下错误。

java.io.IOException: Cannot run program ".\bin\catalina.bat" (in directory "C:\Users\chiranga93\Documents\GitHub\product
-as\integration-tests\target\wso2as-6.0.0-SNAPSHOT"): CreateProcess error=2, The system cannot find the file specified
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
        at org.wso2.appserver.test.integration.TestSuiteListener.startPlatformDependApplicationServer(TestSuiteListener.
java:152)

用于此的代码段如下:

        ProcessBuilder processBuilder = new ProcessBuilder();
        processBuilder.directory(appserverHome);
        processBuilder.environment().put("JAVA_OPTS", jacocoArg);

        if (os.toLowerCase().contains("windows")) {
            log.info("Starting server as a " + os + " process");
            return applicationServerProcess = processBuilder.command("\\bin\\catalina.bat", "run").start();
        } else {
            log.info("Starting server as a " + os + " process");
            return applicationServerProcess = processBuilder.command("./bin/catalina.sh", "run").start();
        }

CATALINA_HOME\bin\catalina.bat 文件存在于 bin 文件夹中。但它指定特定文件不存在。

我该如何解决这个问题?

最佳答案

调用 processBuilder.directory(File) 仅为创建的进程设置工作目录,但不用于命令字符串本身。

因此使命令成为绝对路径,例如

if (os.toLowerCase().contains("windows")) {
    String catalinaPath = new File(appserverHome, "bin\\catalina.bat").getAbsolutePath();
    return applicationServerProcess = processBuilder.command(catalinaPath, "run").start();
} ...

关于java.io.IOException : Cannot run program ".\bin\catalina.bat" - CreateProcess error=2, 系统找不到指定的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36337267/

相关文章:

java - Datanucleus - DBCP2 集成警告 - PoolableConnectionFactory 未链接到池

python - 如何使用 Windows Django 远程访问服务器

batch-file - XP 上 bat 文件中管道的奇怪限制

windows - 从子程序返回变量,不工作...为什么?

c++ - 什么时候在窗口上设置最顶层不起作用?

batch-file - 从字面上回显文本 "on"

java - 在 Java 中使用 XPath 获取当前节点值

java - 如何在java数据库查询中使用不等于运算符?

java - 静电不好吗?如何删除静态变量?

c++ - windows下建vst时如何使用外部dll