問題描述:
最近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即可
