2017-04-07 85 views
0

gcc版本6.3.0的Using the GNU Compiler Collection手册指示支持第28页(pdf第42页)上的语言选项-x java。 Debian的拉伸尝试这样的:debian stretch上的gcc -x java

$ gcc -x java HelloWorld.java 
gcc: error trying to exec 'ecj1': execvp: No such file or directory 

安装什么似乎是所需的软件包:

$ sudo apt-get install ecj1 
Reading package lists... Done 
... 
Unpacking ecj1 (3.11.1-1) ... 
Setting up ecj1 (3.11.1-1) ... 
.... 
Reading state information... Done 

不过,我跑在此之后gcc时,得到同样的错误消息。实际上查看/usr/bin,没有安装可执行文件ecj1,并且正在运行的apt-cache search ecj1未建议除我安装的软件包以外的任何其他软件包。

$ gcc --version 
gcc (Debian 6.3.0-11) 6.3.0 20170321 

$ uname -a 
Linux right 4.8.0-1-amd64 #1 SMP Debian 4.8.5-1 (2016-10-28) x86_64 GNU/Linux 

任何建议我还可以尝试运行?

回答

1

的GNU Java编译器必须安装:

$ apt-get install gcj-4.9 gcj-4-9-jdk 

使用的apt-文件搜索包含ecj1作为一个文件包。请注意,apt-cache只搜索与搜索匹配的软件包名称/说明。

安装后,我使用能够

$ gcj-4-9 HelloWorld.java 

,而不是GCC来运行它。

尽管gcj是gcc的前端,但gcc并没有为我工作,并且抱怨没有设置类路径。为了让gcc工作,它可能需要一个不同的,更复杂的命令。

如果您正在编译包含main方法的类,请使用--main选项。

$ gcj-4-9 --main=HelloWorld HelloWorld.java 
+0

非常感谢你。请记住继续使用'apt-file'。在debian扩展中,它看起来像'gcj-6'是安装的软件包,它可以摆脱缺少的'ecj1'错误。编译HelloWorld.java时我仍然缺少类路径错误,但是我想清楚了。 –

+0

@SvenWilliamson在使用gcc时,我得到了相同的缺少类路径错误。我设法让它使用gcj本身工作。查看更新后的答案。 –

+0

运行'gcj-6'本身给我一个链接错误(找不到'-lgcj'),所以我做了'sudo apt-get install libgcj17-dev',但是这并没有消除这个问题。感谢你的帮助无论如何:) –