当我尝试用javac
编译java程序时,我收到一个错误:
The program 'javac' can be found in the following packages:
* default-jdk
* ecj
* gcj-4.6-jdk
* gcj-4.7-jdk
* openjdk-7-jdk
* openjdk-6-jdk
Try: sudo apt-get install <selected package
当我尝试java -version时,它说,
java version "1.7.0_21"
OpenJDK Runtime Environment (IcedTea 2.3.9) (7u21-2.3.9-1ubuntu1)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
当我尝试哪种java我得到/usr/bin/java
如何从命令行编译我的java程序?
正如@Blorgbeard所提到的,您很可能没有安装Java JDK(Java Development Kit)。有关可用于Ubuntu的各种Java版本的更多信息,请参阅this web page。
以下命令将安装Java JDK的OpenJDK版本:
apt-get install default-jdk
我有Ubuntu 12.10,java“1.6.0_27”,这个命令使javac可用:
sudo apt-get install default-jdk
然后像这样编译:
el@apollo:~/retreat3$ javac HelloWorld.java
el@apollo:~/retreat3$ java HelloWorld
Hello, World!
我遇到了同样的问题。我使用了以下命令
sudo apt-get install openjdk-7-jdk
之后编译的应用程序。不确定上述解决方案有何不同。也许我不必指定版本。
实际上,java命令正在我的ubuntu 16.04上工作但不是javac。起初,我摆弄了环境路径,因为我认为我安装了所有java包,问题在于设置环境路径变量。
然后我尝试了命令update-alternatives --list java
返回路径,但update-alternatives --list javac
没有。这向我解释说需要安装javac才能运行sudo apt-get install default-jdk
但是,如果您在运行update-alternatives --list javac
时获得了一条路径,那么我建议您尝试设置$ JAVA_PATH或创建符号链接。可以在页面unable to run javac on Ubuntu上找到帮助。
只需在终端上复制并粘贴即可
sudo apt install openjdk-8-jdk-headless
在我的情况下,我安装了JDK,但我手动安装它,因此它没有添加到路径中。一旦我将这些行添加到我的.zshrc文件中(我正在使用zsh;如果你使用bash,将它们添加到.bash_profile)并重新启动终端,它可以工作:
# Java environment variables
export JAVA_HOME='/opt/java/jdk1.8.0_144' #change accordingly; this needs to match your JDK's location!
export PATH=$PATH:$JAVA_HOME/bin