【发布时间】:2015-10-27 19:38:46
【问题描述】:
我创建了一个客户端程序,它使用 Netty 来通过 TCP 套接字下载 .jar 并创建 JarInputStream 的新实例
当我初始化程序时,一切都会加载查找,直到连接数据库时抛出 MissingResourceException。
正常通过终端/命令提示符运行时,原始 jar(通过 netty 发送的那个)运行良好。我认为这至少在我的代码中不是问题。
我正在使用 HikariCP 进行数据库池,当连接到数据库时,它会抛出这个堆栈跟踪:
Caused by: java.lang.ExceptionInInitializerError
at com.mysql.jdbc.ConnectionPropertiesImpl.<clinit>(ConnectionPropertiesImpl.java:586)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at java.lang.Class.newInstance(Class.java:374)
at com.zaxxer.hikari.util.UtilityElf.createInstance(UtilityElf.java:117)
at com.zaxxer.hikari.pool.PoolUtilities.initializeDataSource(PoolUtilities.java:110)
at com.zaxxer.hikari.pool.BaseHikariPool.<init>(BaseHikariPool.java:157)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:60)
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:48)
at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:80)
Caused by: java.lang.RuntimeException: Can't load resource bundle due to underlying exception java.util.MissingResourceException: Can't find bundle for base name com.mysql.jdbc.LocalizedErrorMessages, locale nl_NL
at com.mysql.jdbc.Messages.<clinit>(Messages.java:54)
... 38 more
Caused by: java.util.MissingResourceException: Can't find bundle for base name com.mysql.jdbc.LocalizedErrorMessages, locale nl_NL
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1499)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1322)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:721)
at com.mysql.jdbc.Messages.<clinit>(Messages.java:52)
... 38 more
我正在使用:
mysql-connector-java:5.1.37 HikariCP-java6 : 2.3.12
我可以确认 LocalizedErrorMessages.properties 文件确实在 com/mysql/jdbc 中。
我正在使用的类加载器:http://pastebin.com/9VsV32Yg
从终端/命令提示符执行时,原始 jar 运行良好。 原始 jar 中的入口点在我的 TCP 应用程序中正确执行,因为我可以看到它的启动输出出现在控制台中。
希望有人知道导致问题的原因。
【问题讨论】:
标签: java mysql classloader hikaricp