[英]Problem executing a batch file in a Java application
我有批處理文件,名為run.bat,它包含以下代碼:
@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.
錯誤可能在哪里?
在PATH中找不到Java.exe。
如果您可以假定已定義JAVA_HOME變量,則可以修改批處理文件:
%JAVA_HOME%\bin\java -Djava.util.logging.config.file=%CXF_HOME%\logging.properties -jar archiveServer-0.1.jar
正如staker建議的那樣,更好的方法是將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的main類來避免使用批處理文件。 但是,archiveServer將在同一進程中運行。 也許這不是你想要的。
我想你沒有在你的PATH
環境變量中添加JAVA_HOME/bin
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.