3

周末我一直在尝试一些不同的 java 编译器,今天早上决定坚持使用 javac。然后,我开始清理由我的测试引起的混乱,并删除了 java 的所有最后痕迹,并在 autoremove 和 autoclean 之后执行了新的“apt-get install openjdk-6-jdk”。

然后遇到了以下怪事:

tarskin@5-PARA-11-0120:~$ javac
The program 'javac' can be found in the following packages:
 * openjdk-6-jdk
 * ecj
 * gcj-4.4-jdk
 * gcj-4.6-jdk
 * gcj-4.5-jdk
 * openjdk-7-jdk
Try: sudo apt-get install <selected package>

我已经安装了openjdk,但无论如何我尝试了它:

tarskin@5-PARA-11-0120:~$ sudo apt-get install openjdk-6-jdk
[sudo] password for tarskin: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
openjdk-6-jdk is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
tarskin@5-PARA-11-0120:~$ 

我知道我一定是在做一些愚蠢的事情,但我不知道是什么,如果其他人可以在正确的方向上给出一个指示,我将不胜感激......

干杯

编辑:发现有关我的 java 发行版的“新”实例的其他一些奇怪的方面,它似乎无法识别例如应该来自正则表达式 import shrugs的“模式”或“匹配器” 。

4

4 回答 4

9

TL;DR:安装 java-1.6.0-openjdk-devel

我在 Fedora 上遇到了类似的问题,但使用 rpm -q -l 列出(预安装的)java-1.6.0-openjdk 包的内容,发现它不包含 javac。它实际上只是一个 JRE,而不是 JDK,正如http://openjdk.java.net/install/上的安装说明所暗示的那样。为了获得 javac,我安装了 java-1.6.0-openjdk-devel 。不完全符合我的预期,因为通常的打包约定表明这是用于进行 openjdk 开发(即在 JVM 上工作)的包,而不是用于使用它开发程序的包。

基本上,openjdk 的包命名既不遵循标准的 Java 约定(需要在某处将其称为 JRE),也不遵循标准的 Linux 打包约定(使用 -devel 表示它用于开发不带 -devel 本身的包)。

于 2013-02-26T11:56:39.563 回答
7

根据http://openjdk.java.net/install/,仅安装 OpenJDK-6 JRE

$ sudo apt-get install openjdk-6-jre

要安装完整的JDK

$ sudo apt-get install openjdk-6-jdk
于 2013-09-26T12:34:48.503 回答
3

检查/etc/alternatives/usr/bin。一个或两个将包含指向您已安装的旧 Java 版本的链接。当这些链接断开时,您会收到上面的错误消息。

要在安装新版本的 Java 后更新链接,请尝试update-alternatives

于 2012-01-09T15:06:06.193 回答
2

首先检查是否安装了 javac 尝试查找该文件: 1. 找到 javac 2. 或 find / -name javac

您还可以在此网站上查看有关如何在 Ubuntu 上安装 java 的说明(我想您在 ubuntu 上):

http://openjdk.java.net/install/

pacakge安装的文件也可以查看: http : //packages.ubuntu.com/hardy/i386/openjdk-6-jdk/filelist,可以看到应该安装javac。也许您还需要运行:打开终端并运行以下命令在 Ubuntu Oneiric 上安装 OpenJDK 7.0:

sudo update-alternatives --config java

于 2012-01-09T15:02:41.693 回答