Я получаю сообщение об ошибке при запуске JBoss.
[ServiceController] Problem starting service jboss:service=Hypersonic,database=localDB
java.lang.NoSuchMethodError: org.hsqldb.DatabaseURL.parseURL(Ljava/lang/String;ZZ)Lorg/hsqldb/persist/HsqlProperties;
at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at org.jboss.jdbc.HypersonicDatabase.getConnection(HypersonicDatabase.java:768)
at org.jboss.jdbc.HypersonicDatabase.startStandaloneDatabase(HypersonicDatabase.java:618)
at org.jboss.jdbc.HypersonicDatabase.startService(HypersonicDatabase.java:564)
at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
at com.sun.proxy.$Proxy0.start(Unknown Source)
at org.jboss.system.ServiceController.start(ServiceController.java:417)
Предыстория: я добавил новый источник данных MS Access DB. Для этого я использую библиотеку ucanaccess. Теперь, чтобы связать свой код, я создал исполняемый файл uber jar, который содержит мою основную тестовую программу вместе с зависимостями. Зависимости включают следующие банки:
ucanaccess-4.0.1.jar
commons-lang-2.6.jar
commons-logging-1.1.3.jar
hsqldb-2.3.1.jar
jackcess-2.1.6.jar
Кроме того, я настроил свой источник данных в MSAccess-ds.xml и развернул его в папке развертывания. И я сохранил свой uber jar с именем «Service-MSAccessDB.jar» внутри папки lib сервера, а также Ear / lib. Теперь при запуске сервера я получаю ошибку выше.
Теперь, если я переименую свою банку в «EService-MSAccessDB.jar», ошибка исчезнет.
Проблема, которую я чувствую, заключается в том, что библиотека сервера JBoss уже содержит hsqldb.jar. И когда я ставлю свою убер-банку, это вызывает некоторый конфликт. При запуске он пытается найти метод, например DatabaseURL.parseURL (Ljava / lang / String; ZZ) Lorg / hsqldb / persist / HsqlProperties; который присутствует в моем uber jar, но не в hsqldb.jar. И когда я переименовываю свой uber jar так, что он в алфавитном порядке выше по порядку относительно hsqldb.jar, проблема исчезает.
Теперь у меня вопрос, почему он ищет такой метод при настройке DefaultDS, которая является конфигурацией JBoss по умолчанию. Как решить эту проблему, не переименовывая мою банку Uber, добавляя букву «E» перед именем Jar, не имеет смысла.