在使用Logstash安装插件的时候,发生了一个错误,如下:

ERROR: Something went wrong when installing logstash-input-jdbc, message: java.security.KeyException

经查可能是与系统自带的OpenJDK有关,解决方案是将系统自带的OpenJDK更新为Oracle的JDK。

[cloud@localhost ~]$ java -version
openjdk version "1.8.0_141"
OpenJDK Runtime Environment (build 1.8.0_141-b16)
OpenJDK 64-Bit Server VM (build 25.141-b16, mixed mode)

下载 Oracle JDK

首先从 Oracle网站下载所需的JDK。

我下载的是 1.8 版本的 rpm 安装包,因为 Elasticsearch 套装需要Java 1.8。

安装Oracle JDK

使用如下命令进行安装

[root@localhost cloud]# rpm -ivh jdk-8u144-linux-x64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:jdk1.8.0_144-2000:1.8.0_144-fcs ################################# [100%]
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...

使用update-alternative配置java

首先执行 update-alternative —list java 看一下系统中有几个java版本。

[root@localhost cloud]# update-alternatives --display java
java - status is auto.
link currently points to /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/jre/bin/java
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64/jre/bin/java - priority 170051
slave ControlPanel: (null)
slave javaws: (null)
slave jcontrol: (null)
slave jjs: (null)
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/jre/bin/java - family java-1.8.0-openjdk.x86_64 priority 1800141
slave ControlPanel: (null)
slave javaws: (null)
slave jcontrol: (null)
slave jjs: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/jre/bin/jjs
/usr/java/jdk1.8.0_144/jre/bin/java - priority 180144
slave ControlPanel: /usr/java/jdk1.8.0_144/jre/bin/ControlPanel
slave javaws: /usr/java/jdk1.8.0_144/jre/bin/javaws
slave jcontrol: /usr/java/jdk1.8.0_144/jre/bin/jcontrol
slave jjs: /usr/java/jdk1.8.0_144/jre/bin/jjs
Current `best' version is /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/jre/bin/java.

输出的内容省略了一部分,可以看到,系统中存在OpenJDK 和 Oracle的JDK,下面选择Oracle JDK为默认

[root@localhost cloud]# update-alternatives --config java

There are 3 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
1 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64/jre/bin/java
*+ 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/jre/bin/java)
3 /usr/java/jdk1.8.0_144/jre/bin/java Enter to keep the current selection[+], or type selection number: 3
[root@localhost cloud]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

update-alternatives 提供了交互界面,我们选择3之后会车,配置就会生效,可以看到已经改过来了。

update-alternatives 介绍

如果我们用ls -l /usr/bin/java 查看,可以发现命令其实都是软链接,现在java会定期升级,版本也特别多,所以很多命令都是软链接,update-alternatives就是管理这些软链接,这样版本切换的时候,可以将所有的链接同时进行更新。

本文操作系统为 CentOS release 6.5(final),本文是用 rpm 方式安装的jdk,如果下载的源码,可能需要配置 profile 并用 update-alternative —install 命令安装,本文没有尝试。

参考资料:

1、linux下如何使用自己安装的SunJDK替换默认的OpenJDK

2、如何更改Linux中默认的openjdk为自己安装的JDK

3、Linux安装Oracle JDK替换OpenJDK详解

将Linux默认的OpenJDK替换为Oracle JDK的更多相关文章

  1. 关于将Linux中默认的OpenJDK替换为JDK的方法

    首先下载需要的jdk安装包,后缀建议.tar.gz,本文中以jdk-8u212-linux-x64.tar.gz为例,地址就在oracle官网. 将安装包下载到linux环境后,使用命令tar -xz ...

  2. 你安装的是SUN/Oracle JDK还是OpenJDK?

    目录 1 如何查看你安装的JDK版本 1.1 要用到的命令行工具 1.2 查看JDK的版本 2 什么是 OpenJDK 2.1 OpenJDK 的来历 2.2 Oracle JDK的来历 3 Orac ...

  3. Oracle JDK vs OpenJDK

    OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的“开源”是通常意义上的源码开放形式,即源码是可被复用的,例如IcedTea.UltraViolet都是从OpenJDK源码衍生出的 ...

  4. [转帖]SUN/Oracle JDK还是OpenJDK?

    你安装的是 https://www.cnblogs.com/shoufeng/p/9719995.html 目录 1 如何查看你安装的JDK版本 1.1 要用到的命令行工具 1.2 查看JDK的版本 ...

  5. linux下如何使用自己安装的SunJDK替换默认的OpenJDK

    在linux系统中,由于涉及到版权问题,在大部分linux系统的发行版本中,默认都安装了OpenJDK,并且OpenJDK的java命令也已经加入到环境变量中了. 在刚装好的linux系统中,运行ja ...

  6. Linux下Oracle JDK替换Open JDK

    Oracle的产品需要Oracle JDK,但是Linux发行版附带的都是开源的Open JDK,这里给出的方法是在不删除原有Open JDK的情况下,安装Oracle JDK 环境 系统:CentO ...

  7. [转帖] 部分收费的Oracle JDK VS 完全免费的OpenJDK

    来源: http://www.flammulina.com/2018/10/28/%E9%83%A8%E5%88%86%E6%94%B6%E8%B4%B9%E7%9A%84oracle-jdk-vs- ...

  8. 在 Linux 中安装 Oracle JDK 8 以及 JVM 的类加载机制

    参考资料 该文中的内容来源于 Oracle 的官方文档 Java SE Tools Reference .Oracle 在 Java 方面的文档是非常完善的.对 Java 8 感兴趣的朋友,可以直接找 ...

  9. Fedora Server 21下OpenJdk和Oracle Jdk共存

    最新文章:Virson's Blog 参考文章:博客园-三维蚂蚁 Linux公社 1.首先需要下载对应平台的Jdk:Oracle 官网 2.使用yum或rpm命令安装Jdk: yum install ...

随机推荐

  1. 兼容到ie10的js文件导出、下载到本地

    话不多说,上代码: try { let reader = new FileReader(); let blob = new Blob([res.data], { type: 'application/ ...

  2. 【LOJ】#6432. 「PKUSC2018」真实排名

    题解 简单分析一下,如果这个选手成绩是0,直接输出\(\binom{n}{k}\) 如果这个选手的成绩没有被翻倍,那么找到大于等于它的数(除了它自己)有a个,翻倍后不大于它的数有b个,那么就从这\(a ...

  3. 002 jquery基本选择器

    1.选择器 2.基本选择器 3.程序(包含以上五种基本选择器) <!DOCTYPE html> <html> <head> <meta charset=&qu ...

  4. 000 在什么位置写js代码

    一:介绍 1.DOM 2.节点分类 节点及其类型: 1). 元素节点 2). 属性节点: 元素的属性, 可以直接通过属性的方式来操作. 3). 文本节点: 是元素节点的子节点, 其内容为文本. 二:J ...

  5. php 会话控制(Session会话控制)

    php的session会话是通过唯一的会话ID来驱动的,会话ID是一个加密的随机数字,由php生成,在会话的生命周期中都会保存在客户端.客户端保存数据的地方只有cookie,所以php的会话ID一般保 ...

  6. java轻松实现无锁队列

    1.什么是无锁(Lock-Free)编程 当谈及 Lock-Free 编程时,我们常将其概念与 Mutex(互斥) 或 Lock(锁) 联系在一起,描述要在编程中尽量少使用这些锁结构,降低线程间互相阻 ...

  7. ref:Spring JdbcTemplate+JdbcDaoSupport实例

    ref:https://www.yiibai.com/spring/spring-jdbctemplate-jdbcdaosupport-examples.html 在Spring JDBC开发中,可 ...

  8. Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)

    Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项 参考:https://blog.csdn.net/weixin_40475396/article/detail ...

  9. 洛谷AC200纪念

  10. 命令:man

    简介 man命令,是manual的缩写,manual表示手册的意思.通过man命令,可以查询大多数shell外部命令的帮助手册. 语法格式 # man [[section] page ...] ... ...