gpt4 book ai didi

java - 为所有用户在 Ubuntu 16 上安装 OpenJDK 9

转载 作者:行者123 更新时间:2023-12-04 18:29:52 28 4
gpt4 key购买 nike

我想要的:

我想在我的 ubuntu(服务器)机器上安装 openjdk 9,它应该可供所有用户使用。

我做了什么:

  • 尝试使用 sudo apt-get install openjdk-9-jdk 安装

  • java 版:
    openjdk version "9-internal"
    OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src)
    OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode)

    此版本在使用 tomcat 时会抛出异常。
  • 使用 sdkman (http://sdkman.io/)
    java 版:
    openjdk version "9.0.4"
    OpenJDK Runtime Environment (build 9.0.4+11)
    OpenJDK 64-Bit Server VM (build 9.0.4+11, mixed mode)

  • 此版本运行良好,但仅适用于一个用户,并且文档没有说明如何在系统范围内为所有用户安装/配置它。
    当我将应用程序作为 systemd 服务启动时,它也不起作用。

    我对 linux 没有太多经验,只是寻找安装工作 Java 9 版本的最简单方法。请帮忙。

    编辑:

    我在 1. 中使用 jdk 时遇到的异常是:
    java.lang.IllegalAccessException: class org.apache.tomcat.util.buf.ByteBufferUtils cannot access class jdk.internal.ref.Cleaner (in module java.base) because module java.base does not export jdk.internal.ref to unnamed module @14d7c1f2
    at sun.reflect.Reflection.throwIllegalAccessException(java.base@9-internal/Reflection.java:411) ~[na:na]
    at sun.reflect.Reflection.throwIllegalAccessException(java.base@9-internal/Reflection.java:402) ~[na:na]
    at sun.reflect.Reflection.ensureMemberAccess(java.base@9-internal/Reflection.java:99) ~[na:na]
    at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(java.base@9-internal/AccessibleObject.java:355) ~[na:na]
    at java.lang.reflect.AccessibleObject.checkAccess(java.base@9-internal/AccessibleObject.java:347) ~[na:na]
    at java.lang.reflect.Method.invoke(java.base@9-internal/Method.java:525) ~[na:na]
    at org.apache.tomcat.util.buf.ByteBufferUtils.<clinit>(ByteBufferUtils.java:67) ~[tomcat-embed-core-8.5.29.jar!/:8.5.29]
    at org.apache.tomcat.util.net.SocketBufferHandler.expand(SocketBufferHandler.java:155) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
    at org.apache.tomcat.util.net.SecureNioChannel.processSNI(SecureNioChannel.java:334) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
    at org.apache.tomcat.util.net.SecureNioChannel.handshake(SecureNioChannel.java:175) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1436) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@9-internal/ThreadPoolExecutor.java:1158) [na:na]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@9-internal/ThreadPoolExecutor.java:632) [na:na]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.29.jar!/:8.5.29]
    at java.lang.Thread.run(java.base@9-internal/Thread.java:804) [na:na]

    似乎 tomcat 没有注意到它在 Java 9 中运行。当我使用 sdkman 版本时,我没有得到那个异常。此异常导致 SSL 握手不再起作用。

    我用的是spring boot的嵌入式tomcat 2.0.1.RELEASE

    最佳答案

    我最终安装了 Oracle JDK 10,它就像我的应用程序的 sdkman OpenJDK 9 版本一样工作。

    sudo add-apt-repository ppa:linuxuprising/java
    sudo apt update
    sudo apt install oracle-java10-installer

    仍然不知道为什么我通过 aptitude 安装的 OpenJDK9 不起作用...

    关于java - 为所有用户在 Ubuntu 16 上安装 OpenJDK 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50125992/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com