我使用选择 JDK-16.0.2 的 Ubuntu 软件应用程序安装了 JDK,我需要降级到版本 11。
我尝试安装 Oracle SQL Developer。但是我的 ubuntu 安装了 IBM ACE 11 Developer Edition,这让我无法使用 IBM/java 路径来运行 Oracle SQL Developer。所以我下载并安装了 JAVA SE 8 并通过 sudo update-alternatives -set java 设置为使用新的 Java JDK
即使我已设置使用新的 Java JDK,在我的用户终端上也是如此:
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 8.0.6.20 - pxa6480sr6fp20ifix-20210224_01(SR6 FP20+IJ30974))
IBM J9 VM (build 2.9, JRE 1.8.0 Linux amd64-64-Bit Compressed References 20210223_466229 (JIT enabled, AOT enabled)
OpenJ9 - 5b31a42
OMR - 4eb8f5f
IBM - b7e48f4)
JCL - 20201119_01 based on Oracle jdk8u271-b0
$ which java
/opt/IBM/ace-11.0.0.12/common/jdk/jre/bin/java
我想问一下导致我的用户终端 java -version 仍然是通过安装 ACE 11 安装的 java 的设置可能是什么?即使我运行了 update-alternatives -set java,是不是一些 IBM ACE 11 设置使 java -version 与 root 终端不同?并导致我的 sqldeveloper 无法从我的用户帐户启动?
就像在我的根终端中一样,当输入 java -version 时:
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
# which java
/usr/lib/jvm/jdk1.8.0_291/bin/java
In the /etc/alternatives:
lrwxrwxrwx 1 root root 34 June 4 15:52 java -> /usr/lib/jvm/jdk1.8.0_29/bin/java*
我在我的用户和根 .bashrc 和 .profile 中将 JAVA_HOME 设置为 /usr/lib/jvm/jdk1.8.0_29/bin/java
我尝试了几种安装方法openjdk
,这是我安装时得到的:java -version
openjdk version "11.0.4" 2019-07-16
OpenJDK Runtime Environment (build 11.0.4+11-post-Ubuntu-1ubuntu218.04.3)
OpenJDK 64-Bit Server VM (build 11.0.4+11-post-Ubuntu-1ubuntu218.04.3, mixed mode, sharing)
但是当我执行 javac -version 时,它说找不到 javac。我执行以下操作:sudo apt-get install default-jre
The following packages have unmet dependencies:
default-jre : Depends: default-jre-headless (= 2:1.10-63ubuntu1~02) but 2:1.11-68ubuntu1~18.04.1 is to be installed
Depends: openjdk-11-jre but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
然后:sudo apt-get install default-jdk
default-jdk : Depends: default-jre (= 2:1.10-63ubuntu1~02) but it is not going to be installed
Depends: default-jdk-headless (= 2:1.10-63ubuntu1~02) but it is not going to be installed
Depends: openjdk-11-jdk but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
然后:sudo update-alternatives --config java
替代 java 有 2 种选择(提供 /usr/bin/java)。
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
如何解决这些问题并正确安装 java 和 javac?
注意:似乎 jvmtop 被 Java 11 破坏了。如果安装和执行的说明很清楚,我也会接受 Ubuntu 20.04(仅限终端)和 Java 11 的替代 Java 进程分析选项。
jvmtop 要求JAVA_HOME
环境变量指向一个有效的 JDE。
我试图JAVA_HOME
在~/.profile
的最后一行进行设置:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin
所以它是永久性的。
但是,在执行时:bash jvmtop.sh --profile <PID>
我得到了这个:/usr/lib/jvm/java-11-openjdk-amd64/bin seems to be no JDK!
Update1:由于答案的说明,我使环境路径永久化。但是仍然出现错误:
network@ns3009333:~/jvmtop$ echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-amd64/bin
network@ns3009333:~/jvmtop$ bash jvmtop.sh --profile 7435
/usr/lib/jvm/java-11-openjdk-amd64/bin seems to be no JDK!
Update2:我尝试在不同的场合将以下 3 个命令附加到 ~/.profile:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
消息仍然是“似乎没有 JDK!” (我确保我重新登录)。
Update3:还尝试了设置
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
,
nano jvmtop.sh
如我发现的教程中所示。同样的负面结果。
Update4:我认为我的 JDE 可能没有正确安装,所以我重新安装了 Java JDK 和 JDE。我目前已经完全安装了 java 11 并确认可以正常工作(没有其他 java 版本,只有 11)。我还验证了/usr/lib/jvm/java-11-openjdk-amd64
路径指向的文件夹确实存在并且有内容。
我还尝试同时执行 jvmtop.sh./
并且bash
错误消息是相同的。
当前设置是:
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
添加到
nano jvmtop.sh
第 10 行,然后执行指向有效进程 ID 的 jvmtop.sh。
Update5:我终于决定在 jvmtop 上打开一个 github 票,当然,在我这样做之后,我发现有人已经在同一个问题上这样做了: https ://github.com/patric-r/jvmtop/问题/119
我需要安装 8.0.232 openjdk 版本。我正在使用 sdkman,结果sdk list java
是:
Java.net | | 15.ea.25 | open | | 15.ea.25-open
| | 14.0.1 | open | | 14.0.1-open
| | 13.0.2 | open | | 13.0.2-open
| | 12.0.2 | open | | 12.0.2-open
| | 11.0.7 | open | | 11.0.7-open
| | 10.0.2 | open | | 10.0.2-open
| | 9.0.4 | open | | 9.0.4-open
| | 8.0.252 | open | | 8.0.252-open
| >>> | 8.0.242 | open | local only | 8.0.242-open
如何安装 8.0.232?
我的 Apache NetBeans 11.1 和 JDK 11 运行良好。
然后NetBeans升级到11.3,不知什么原因看不到JDK,所以我下载了JDK 14,添加到NetBeans Platforms。一切正常。
Ubuntu 升级到 19.10。
无论我单击多少次,Apache Netbeans 现在都无法从收藏夹图标中工作。
我删除了 Ubuntu 软件的 NB,然后从终端重新安装它,但由于从存档中获取 jdk 的一些错误而停止,所以我从 snap 安装它。
我必须打开终端并运行
netbeans --jdkhome /home/username/myjavafolder/jdk-14.0.1
它工作正常,并且Tools\Java Platforms
显示 JDK 14 是默认平台。但是我不想每次运行 NetBeans 时都打开终端。
在 Ubuntu 软件中显示 Apache NetBeans 已安装,但是当我右键单击收藏图标并单击“显示详细信息”时,Ubuntu 软件显示“无法找到 netbeans_netbeans.desktop”
我把netbeans.conf
指向上面的jdkhome改了。
我也更改了JAVA_HOME
变量(使用JAVA_HOME=$"/home/username/myjavafolder/jdk-14.0.1"
,但重新启动后,由于某种原因它被重置(当echo $JAVA_HOME
我得到一个空行时)
在终端中使用which
显示 netbeans 位于snap/bin/netbeans
,但在此文件属性中显示其链接目标为/usr/bin/snap
. 这有什么关系吗?
谢谢。
截至今天(2020 年 5 月 6 日),下面描述的问题现已过时,因为 OpenJDK-14 终于出现在 Ubuntu 20.04 存储库中。
我已经安装了 Ubuntu 20.04 Focal Fossa,并尝试安装两种版本的最新 Java JDK:OpenJDK 和 Oracle。但是,通过 apt search 搜索OpenJDK(以及 JRE)只能获得 11th edition。
在https://packages.ubuntu.com/ 上搜索缩小到焦点分布也可以得到openjdk-11 -jXX 的结果。将选择的分布切换为eoan,提供所有最新版本,包括14 th。
我不是在问如何强制安装第 14 版的 OpenJDK,而是因为这个原因?是否出于任何安全原因,我也应该摆脱第 14 个 Oracle 版本(降级到第 11 个)?或者只是耐心等待,因为 OpenJDK-14 需要获得 Focal Fossa 的批准?
我已经安装了 openJDK,但希望默认使用常规 JDK 11(不是 OpenJDK)。我已采取的步骤:
1)java -version
openjdk 版本 "11.0.7" 2020-04-14 OpenJDK 运行时环境 (build 11.0.7+10-post-Ubuntu-2ubuntu219.10) OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-2ubuntu219) .10,混合模式,共享)`
2)sudo apt-get install oracle-java11-set-default-local
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package oracle-java11-set-default-local is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'oracle-java11-set-default-local' has no installation
3)update-java-alternatives -l
java-1.11.0-openjdk-amd64 1111
/usr/lib/jvm/java-1.11.0-openjdk-amd64
4) 我是否可以将包安装程序设置为 /usr/lib/jvm/jdk-11.0.7,而不是 java-11-oracle?屏幕截图的顶部是我从 Oracle 网站下载的 .deb 文件。底部是保存在 /usr/lib/jvm 中的内容
请帮忙!我已经从这个站点下载了 Java SE JDK 的 .deb 版本:https ://www.oracle.com/java/technologies/javase-jdk11-downloads.html这个 .deb 文件保存在我的下载文件夹中。当我双击 Ubuntu 软件安装页面弹出的图标时,我点击安装,但它从未安装。
所以我再次按安装,它说你确定要删除它吗?如果我单击删除,它就会从 Ubuntu 软件中消失。我已经尝试过 sudo dpkg -i jdk-11.07_linux-x64_bin.deb
,但我得到“dpkg:错误:无法访问存档'jdk-11.07_linux-x64_bin.deb':没有这样的文件或目录”。
尝试使用终端安装时,我收到此错误:Oracle JDK 11 is NOT installed.
dpkg: error processing package oracle-java11-installer-local (--configure):
installed oracle-java11-installer-local package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
oracle-java11-installer-local
E: Sub-process /usr/bin/dpkg returned an error code (1)
java-11-oracle 目录中没有任何内容。我已经下载了 jdk-11.0.7_linux-x64_bin.tar.gz 并将其放入 /var/cache/oracle-jdk11-installer-local,但是现在当我运行 sudo add-apt-repository ppa:linuxuprising/java 我得到一个错误 Err:1 archive.ubuntu eoan InRelease 无法解析“archive.ubuntu”