我正在尝试使用以下代码在java程序中执行cmd命令
String command = "clingo F:\\clingo\\food1.lp F:\\clingo\\fooddata.txt"
+ " 0"+" >>F:\\clingo\\foodout.txt";
Process p1 = Runtime.getRuntime().exec(command);
这是在java中执行没有任何异常,但实际命令没有运行。如果命令运行,它应该在提到的位置创建文本文件foodout.txt。什么都没发生。
实际命令是
clingo food1.lp fooddata.txt 0 >>foodout.txt
clingo是一个Windows可执行程序。在命令提示符下运行时,此命令正常工作。我想通过单击按钮在java程序中运行它。我为clingo设置了环境变量。 Clingo和这个java项目在同一个目录中。
在此之前我尝试了下面的代码
String[] command = {"clingo", "food1.lp","fooddata.txt", "0", ">>foodout.txt"};
ProcessBuilder builder = new ProcessBuilder(command);
builder.directory(new File(WorkingDirectoryArea.getText()));
Process process = builder.start();
其中Workingdirectoryarea包含要运行的命令的目录位置。这段代码什么都不做。
有人可以指导我或提供有关如何在此java程序中运行cmd命令的代码示例。我正在使用Netbeans IDE。感谢。
答案 0 :(得分:0)
您正在将标准输出重定向到文件。这不是命令的一部分,也不是命令行参数。是处理此问题的命令解释器。
您必须调用命令解释程序来运行您的程序:
String command = "cmd /c clingo F:\\clingo\\food1.lp F:\\clingo\\fooddata.txt"
+ " 0"+" >>F:\\clingo\\foodout.txt";
Process p1 = Runtime.getRuntime().exec(command);
请注意调用命令解释程序的cmd /c
部分,就像在Windows终端上一样运行命令。
在Linux上它将是sh -c
或你喜欢的任何shell。
运行命令时,clingo.exe
必须位于您的路径中,或者它必须位于Java解释器的默认目录中。如果没有,您应该提供可执行文件的完整路径,如下所示:
String command = "cmd /c F:\\clingo\\clingo F:\\clingo\\food1.lp F:\\clingo\\fooddata.txt"
+ " 0"+" >>F:\\clingo\\foodout.txt";
尝试运行
F:\\clingo\\clingo F:\\clingo\\food1.lp F:\\clingo\\fooddata.txt 0 >> F:\\clingo\\foodout.txt
在Windows提示符下,看看它是否按预期工作。如果它工作,它也应该从Java程序运行时工作。请用适合您环境的正确路径替换clingo路径。
答案 1 :(得分:0)
你说你的命令使用命令提示符。好。如果仔细观察,命令窗口会有一个路径条目(cmd = echo%PATH%)。这是在命令窗口中执行命令和执行java进程之间的区别。你有2个选择。
1. Add the path to the process.
2. Add the path to the clingo command (i.e. "f:\path\clingo.exe ...)
使用dos命令时尤其需要第1项。要添加路径环境: Runtime.getRuntime().exec not finding file in java environment
答案 2 :(得分:-1)
您的命令必须如下:java -jar yourExecuteable.jar yourParameter
在您的情况下:java -jar clingo.jar food1.lp fooddata.txt 0 >>foodout.txt