2010-09-10 60 views
5

我的批處理文件,命名爲run.bat中這inlcudes下面的代碼執行批處理文件:問題在Java應用程序

@echo off 
REM bat windows script 
set CXF_HOME=.\lib\apache-cxf-2.2.7 
java -Djava.util.logging.config.file=%CXF_HOME%\logging.properties -jar archiveServer-0.1.jar 

當我執行命令行上此文件時,它完美的作品。然而,當我嘗試用下面的語句一個java文件中執行:

File path = new File("C:/Documents and Settings/Zatko/My Documents/Project-workspace/IUG/external/application/archive");  

Runtime.getRuntime().exec(new String[]{"cmd.exe", "/C", "start", "run.bat"}, new String[]{}, path); 

我得到在終端窗口中出現以下錯誤:

'java' is not recognized as internal or external command, operable program or batch file. 

當錯誤可能是?

回答

1

我想你沒有把加到你的PATH環境變量中。

+0

你是怎麼做到的? – Anto 2010-09-10 22:38:57

+0

值C:\ Program Files \ Java \ jdk1.6.0_18 \ bin;包含在PATH變量中 – Anto 2010-09-10 22:43:02

+0

嘗試在批處理文件中添加java之前的C:\ Program Files \ Java \ jdk1.6.0_18 \ bin。一個更簡潔的方法可能是使用帶有兩個參數的Runtime.getRuntime()。exec()指定環境。 – stacker 2010-09-10 23:01:06

2

在您的PATH中找不到Java.exe。

如果可以假設JAVA_HOME變量定義,您可以修改您的批處理文件:

%JAVA_HOME%\bin\java -Djava.util.logging.config.file=%CXF_HOME%\logging.properties -jar archiveServer-0.1.jar 

一個更好的方式來做到這將是,作爲鉚接器建議,設置PATH環境變量包含%JDK_HOME%\ bin中

File workingDirectory = new File("C:/Documents and Settings/Zatko/My Documents/Project-workspace/IUG/external/application/archive");  
String javaProgram = System.getProperty("java.home") + "\bin"; 
String[] command = {"cmd.exe", "/C", "start", "run.bat"}; 
String[] environment = {"PATH=" + javaProgram}; 
Process process = Runtime.getRuntime().exec(command, environment, workingDirectory); 

作爲第三種選擇,您也可避免直接調用主類的jar有批處理文件。但是,您的存檔服務器將運行在相同的過程中。也許這不是你想要的。

+0

+1我修復了一些小錯別字,如果您不同意,請回滾。 – stacker 2010-09-11 08:53:33

+0

@stacker謝謝。我剛剛添加了問題代碼中指定的workingDirectory。 – gawi 2010-09-11 13:36:16