2016-03-31 24 views
0

Javaを使用してTomcatプロセスを開始しようとすると、次のエラーが発生します。java.io.IOException: "。 bin catalina.bat"プログラムを実行できません - CreateProcessエラー= 2、指定されたファイルが見つかりません

 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フォルダに存在する次のよう

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) 

このために使用されるコードセグメントです。しかし、特定のファイルが存在しないことを示します。

どうすればこの問題を解決できますか?

答えて

1

コールprocessBuilder.directory(File)は、作成されたプロセスの作業ディレクトリを設定するだけですが、コマンド文字列自体には使用されません。

したがって、コマンドを絶対パスにします。

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