从任何地方使用 Java 运行时执行 cl 命令
Execute cl command with Java Runtime from anywhere
我正在尝试 call/execute 使用 Java 运行时的 C++ 编译器命令。
Runtime runtime = Runtime.getRuntime();
String[] command = { "cl", "/P", "/EP", "/C", "-D", "LOC" + loc_file, file};
Process process = runtime.exec(command);
process.waitFor();
但是我总是收到以下错误消息:
"Cannot run program "cl.exe" CreateProcess error=2, The system cannot find the file specified."
很明显它没有找到 cl 程序。但是,我真的不知道如何配置 Java 运行时,以便找到 cl 程序。有没有办法为它设置某种 PATH 变量来找到 cl 程序?
如果我想在cmd中调用cl程序,首先要运行 vcvars32.bat
位于C:\Program Files (x86)\Microsoft Visual Studio19\BuildTools\VC\Auxiliary\Build
。然后我就可以随心所欲地使用cl程序了。但是我不知道如何通过 Java 代码完成此操作。
根据你的情况,我认为有两种解决方法:
1 更改系统上的 PATH 并在此更新的环境中启动程序
根据您在问题下的评论判断,这是您所做的。
您可以手动将要启动的程序添加到系统的“PATH”中,方法是调整环境变量,然后使用更新后的环境重新启动 java 程序。
2 在 Eclipse 中,仅为您的程序修改 PATH 环境变量
既然您提到您使用的是 Eclipse,那么有一种替代方法可以修改操作系统配置中的 PATH。
在 Eclipse 的 Run Configurations
中,有一个 Environment
选项卡,您可以在其中为您的特定程序定义新的环境变量或修改现有环境变量。您可以在此处对 PATH 进行如下修改:
我正在尝试 call/execute 使用 Java 运行时的 C++ 编译器命令。
Runtime runtime = Runtime.getRuntime();
String[] command = { "cl", "/P", "/EP", "/C", "-D", "LOC" + loc_file, file};
Process process = runtime.exec(command);
process.waitFor();
但是我总是收到以下错误消息:
"Cannot run program "cl.exe" CreateProcess error=2, The system cannot find the file specified."
很明显它没有找到 cl 程序。但是,我真的不知道如何配置 Java 运行时,以便找到 cl 程序。有没有办法为它设置某种 PATH 变量来找到 cl 程序?
如果我想在cmd中调用cl程序,首先要运行 vcvars32.bat
位于C:\Program Files (x86)\Microsoft Visual Studio19\BuildTools\VC\Auxiliary\Build
。然后我就可以随心所欲地使用cl程序了。但是我不知道如何通过 Java 代码完成此操作。
根据你的情况,我认为有两种解决方法:
1 更改系统上的 PATH 并在此更新的环境中启动程序
根据您在问题下的评论判断,这是您所做的。
您可以手动将要启动的程序添加到系统的“PATH”中,方法是调整环境变量,然后使用更新后的环境重新启动 java 程序。
2 在 Eclipse 中,仅为您的程序修改 PATH 环境变量
既然您提到您使用的是 Eclipse,那么有一种替代方法可以修改操作系统配置中的 PATH。
在 Eclipse 的 Run Configurations
中,有一个 Environment
选项卡,您可以在其中为您的特定程序定义新的环境变量或修改现有环境变量。您可以在此处对 PATH 进行如下修改: