首页 > 解决方案 > 在 Ubuntu 中无法在没有 sudo 的情况下启动 sqldeveloper

问题描述

我按照我的 Virtual Box Ubuntu 中的在线文章安装了 Oracle SQL Developer。

我的 Ubuntu 安装了 IBM ACE 11 Developer Edition。所以当我在终端(用户)输入 java -version 时,我得到了这个:

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

但是在我的根终端中,我的 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)

.bashrc 和 /etc/profile 中的 JAVA_HOME 都设置为 usr/lib/jvm/jdk1.8.0_291 (根据文章新下载的 JDK)

第一个问题是为什么我将那些 JAVA_HOME 路径设置为相同的路径,但用户帐户中的 java -version 不是我新安装的 JDK。

# update-alternatives --list java
/opt/IBM/ace-11.0.0.12/common/jdk/jre/bin/java
/usr/lib/jvm/jdk1.8.0_291/bin/java

我已设置使用 sudo 命令 update-alternatives --set java ... 来使用新安装的 java (/usr/lib/jvm/jdk1.8.0_291/bin/java)。

我可以使用 root 启动 sqldeveloper。但无法使用我已将 SetJavaHome 设置为新安装的 Java 路径的用户帐户启动 sqldeveloper。

我试过这个https://askubuntu.com/questions/566721/sql-developer-runs-in-terminal-with-sudo-sqldeveloper-but-not-without-sudo它要求更改文件所有权。但它仍然不起作用

尝试启动 sqldeveloper 时出现错误

 Oracle SQL Developer
 Copyright (c) 2005, 2020, Oracle and/or its affiliates. All rights reserved.

/usr/lib/jvm/jdk1.8.0_291/bin/java: relocation error: /usr/lib   /jvm/jdk1.8.0_291/jre/lib/amd64/libnio.so: 
symbol initInetAddressIDs version SUNWprivate_1.1 not defined in file libnet.so with link time reference

第二个问题是如何在不使用 root 启动 sqldeveloper 时解决错误?

标签: javaubuntuoracle-sqldeveloper

解决方案


  1. 登录时执行的bashrc和其他基于配置文件的脚本(如 bash_profile 等)对于不同的用户是不同的。也许 root 用户bashrc没有这个 JAVA_HOME 或者可能有一个完全不同的版本。因此,请确保这两个用户的主目录中的文件具有相同的版本。有关更多信息,您可以查看.bashrc、.bash_profile 和 .environment 之间的区别是什么?

  2. 该错误指出symbol initInetAddressIDs version SUNWprivate_1.1 not defined in file libnet.so. 这可能是java设置的问题。获取的 .so 库可能会混淆。一旦你解决了第一个问题,它可能会起作用。


推荐阅读