java - 无法从 Java 程序内部调用 "gcc"

标签 java cygwin

我试图从 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++-3g++-4 的符号链接(symbolic link),但 Cygwin 符号链接(symbolic link)对非-Cygwin 程序。因此,您需要直接调用符号链接(symbolic link)目标。

关于java - 无法从 Java 程序内部调用 "gcc",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7132448/

相关文章:

c - 在 cygwin 上使用 fscanf() 读取 "text"文件的行

c - cygwin 中的\a 没有声音

c++ - Cygwin 终端 GDB 列表功能不起作用

c++ - Cygwin 不编译 stod

java - Xuggle 和 java 库路径

cygwin - 在我的 zsh 自定义提示(cygwin)中呈现时,一些表情符号图标被切成两半

java - 拆分 IP 地址字符串以检查是否有效,如果有效 : create array to store each value

java - cardview :)? 内的灰线

java - JAR 文件无法识别 mysql 数据库

java - 在项目 xxx 的构建路径中检测到循环 - 构建路径问题