簡體   English   中英

在Java應用程序中執行批處理文件時出現問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM