gpt4 book ai didi

java - 在 Java 应用程序中执行批处理文件时出现问题

转载 作者:搜寻专家 更新时间:2023-10-31 20:23:59 25 4
gpt4 key购买 nike

我有一个名为 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 的主类来避免拥有批处理文件。但是,您的 archiveServer 将在同一进程中运行。也许这不是您想要的。

关于java - 在 Java 应用程序中执行批处理文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3688847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com