问题描述:
最近docker环境下配置logstash,在启动logstash后,报错mysql-connector-java的jar包找不到,提示TypeError: failed to coerce jdk.internal.loader.ClassLoaders$AppClassLoader to java.net.URLClassLoader。这个是因为logstash的容器环境内的JDK版本问题导致的,可以通java -version看看容器内的JDK版本是否为JDK1.8,如果不是,我们只需要将JDK版本卸载再重新安装JDK1.8即可成功运行
解决过程:
- 查看容器的id
docker ps
- 进入容器的交互界面
docker exec -it -u root 3e73d1f213fa /bin/bash
- 查看JDK版本
java -version
我这里是更换过的,如果不是JDK1.8就要更换到JDK1.8
- 卸载JDK
[root@localhost ~]# rpm -qa|grep jdk
copy-jdk-configs-3.3-10.el7_5.noarch
java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.4.el7_5.x86_64
java-1.8.0-openjdk-headless-1.8.0.181-3.b13.el7_5.x86_64
卸载
[root@localhost ~]# yum -y remove java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.4.el7_5.x86_64
- 安装JDK1.8
再上传自己的下载的JDK1.8包,进行安装和配置环境变量即可
最后测试一下容器内的JDK成功更换到JDK1.8,重新启动logstash即可