在使用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. 【LOJ】#2090. 「ZJOI2016」旅行者

    题解 每次按较长边把矩形分成两半,找一个中间轴,轴上的每个点跑一边最短路更新所有的答案 然后把矩形分成两半,递归下去 代码 #include <bits/stdc++.h> #define ...

  2. SOCKET简单爬虫实现代码和使用方法

    抓取一个网页内容非常容易,常见的方式有curl.file_get_contents.socket以及文件操作函数file.fopen等. 下面使用SOCKET下的fsockopen()函数访问Web服 ...

  3. Linux常用包的安装

    下面列出的这些包都有很强大的功能,也是非常实用常用的工具 gcc yum -y install gcc GNU编译器套件(GNU Compiler Collection) gcc-c++ yum -y ...

  4. R语言编程艺术(5)R语言编程进阶

    本文对应<R语言编程艺术> 第14章:性能提升:速度和内存: 第15章:R与其他语言的接口: 第16章:R语言并行计算 ================================== ...

  5. P1102 A-B数对

    P1102 A-B数对用map过掉,可以当高效的桶排用,map<long long,int>m;意思是m[long long]==int; #include<iostream> ...

  6. AngularJs指令配置参数scope详解

    AngularJs最重要也是最难理解的模块之一就是它的指令(directive)了,自定义指令配置有很多个参数,下面我只说说其中scope的配置极其含义. scope表示指令的作用域,它有三个可选值: ...

  7. 两种思想实现基于jquery的延时导航菜单,可做延时触发器!

    1. 函数式 html如下: <div class="box"> <ul class="clear-fix"> <li class ...

  8. java中关于锁知识的整理

    1.1什么是锁? 在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限制.锁旨在强制实施互斥排他.并发控制策略. 锁通常需要硬件支持才能有效 ...

  9. POJ 1151Atlantis 矩形面积并[线段树 离散化 扫描线]

    Atlantis Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21734   Accepted: 8179 Descrip ...

  10. hdu 5734 Acperience 水题

    Acperience 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5734 Description Deep neural networks (DN ...