我试图从 Java 程序调用 GNU C 编译器来编译 c++ 文件,但出现错误:
这是程序
class HelloWorld {
public static void main(String[] args) {
Runtime sys = Runtime.getRuntime();
System.out.println("Hello World!");
try {
String com = "g++ NB.cpp -o NNN";
System.out.println(com);
Process p = sys.exec(com);
}
catch (Exception ep) {
System.err.println(ep);}
}
}
这是我编译和运行程序时得到的结果
$javac HelloWorld.java
$java HelloWorld
Hello World!
gcc NB.cpp -o NB
java.io.IOException: Cannot run program "g++": CreateProcess error=5, Access is denied
这里是 gcc 所在的地方
$ which gcc
/usr/bin/gcc
这里是PATH的内容
$ echo $PATH
/usr/local/bin:/usr/bin:/cygdrive/c/Program Files/Java/jdk1.6.0_26/bin:/cygdrive/c/Program Files (x86)/MiKTeX 2.9/miktex/bin:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windo
ws/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/d/SourceForge/vectorpascalcom: D:/Cygwin/bin:/cygdrive/d/make382:/cygdrive/d/usr/bin:/cygdrive/d/Program Files/TortoiseSV
N/bin:/cygdrive/d/SourceForge/vectorpascalcom:/usr/bin:/cygdrive/c/Program Files/Java/jdk1.6.0_26/bin
有人能帮忙吗?
最佳答案
Cygwin 中的
g++
通常是 g++-3
或 g++-4
的符号链接(symbolic link),但 Cygwin 符号链接(symbolic link)对非-Cygwin 程序。因此,您需要直接调用符号链接(symbolic link)目标。
关于java - 无法从 Java 程序内部调用 "gcc",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7132448/