Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从内存运行.jar时MySQL缺少资源异常HikariCP_Java_Mysql_Classloader_Hikaricp - Fatal编程技术网

Java 从内存运行.jar时MySQL缺少资源异常HikariCP

Java 从内存运行.jar时MySQL缺少资源异常HikariCP,java,mysql,classloader,hikaricp,Java,Mysql,Classloader,Hikaricp,我创建了一个客户端程序,它使用Netty通过TCP套接字下载.jar,并创建一个新的JarInputStream实例 当我初始化程序时,所有东西都会加载,直到连接数据库时抛出MissingResourceException 最初的jar(通过netty发送的jar)在正常情况下通过terminal/commandprompt运行时运行良好。我认为这至少在我的代码中不是一个问题 我正在使用HikariCP进行数据库池,当连接到数据库时,它会抛出以下堆栈跟踪: Caused by: java.lan

我创建了一个客户端程序,它使用Netty通过TCP套接字下载.jar,并创建一个新的JarInputStream实例

当我初始化程序时,所有东西都会加载,直到连接数据库时抛出MissingResourceException

最初的jar(通过netty发送的jar)在正常情况下通过terminal/commandprompt运行时运行良好。我认为这至少在我的代码中不是一个问题

我正在使用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连接器java:5.1.37 HikariCP-java6:2.3.12

我可以确认LocalizedErrorMessages.properties文件确实位于com/mysql/jdbc中

我正在使用的类加载器:http://pastebin.com/9VsV32Yg

从terminal/commandprompt执行时,原始jar运行良好。 原始jar中的入口点在我的TCP应用程序中得到正确执行,因为我可以在控制台中看到它的启动输出


希望有人知道问题的原因。

您需要实现公共URL getResourceString name和各种其他资源API。类加载器不只是加载类,它还提供对JAR中包含的其他资源的访问。

在我扩展的java.lang.ClassLoader中,它没有声明为抽象。jar中资源的正确URL.protocol是什么?为什么不重写该方法,设置断点,然后找出答案?如果我记得的话,它是以jar://或什么开头的。