2015-10-27 5 views
0

Я создал клиентскую программу, которая использует Нетти, чтобы скачать .jar через сокет TCP и создает новый экземпляр JarInputStreamMySQL MissingResourceException при выполнении .jar из HikariCP памяти

Когда я инициализацию программа загружает все до тех пор, пока не будет подключена база данных, когда она выдает исключение MissingResourceException.

Оригинальная баночка (тот, который получает посылку с колючей сетью) отлично работает, когда нормально работает через терминал/commandprompt. Я не думаю, что это проблема в моем коде по крайней мере.

Я использую HikariCP для объединения баз данных и при подключении к базе данных он бросает мне это StackTrace:

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

оригинальный сосуд работает нормально, когда выполняются из терминала/интерпретаторе команд. Точка входа в исходную банку корректно выполняется в моем приложении TCP, так как я вижу, что вывод запуска из нее появляется в консоли.

Надеюсь, что кто-то знает, что вызывает проблему.

ответ

0

Вы должны реализовать общедоступный URL-адрес getResource (имя строки) и различные другие API ресурсов. ClassLoader не просто загружает классы, но также обеспечивает доступ к другим ресурсам, содержащимся в JAR.

+0

Его не объявлено как аннотация в java.lang.ClassLoader, который я продлеваю. Каков правильный URL.protocol для ресурса внутри банки? – Wesley

+0

Почему бы вам не переопределить метод, установить точку останова и выяснить? Если я помню, это начинается с jar: // или что-то в этом роде. – brettw