绑定默认hsql数据源时启动Jboss 4.3时出错

时间:2018-02-12 13:56:18

标签: jboss hsqldb ucanaccess

我在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库。现在,为了捆绑我的代码,我创建了一个可执行的超级jar,其中包含我的主要测试程序以及依赖项。依赖关系包括以下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中配置了我的数据源并部署在deploy文件夹中。我把我的超级罐子命名为" Service-MSAccessDB.jar"内部服务器lib文件夹以及Ear / lib。现在,在服务器启动时,我遇到了错误。

现在,如果我将我的jar重命名为" EService-MSAccessDB.jar",则错误消失。

我觉得JBoss服务器lib已经包含了hsqldb.jar。当我放置我的超级罐时,它会引起一些冲突。在启动时,它试图找到一个方法,即DatabaseURL.parseURL(Ljava / lang / String; ZZ)Lorg / hsqldb / persist / HsqlProperties;它存在于我的超级罐中但不存在于hsqldb.jar中。当我重新命名我的超级罐时,它按顺序按字母顺序排列,与hsqldb.jar相比,问题就会消失。

现在,我的问题是,为什么在配置DefaultDS这是JBoss的默认配置时会寻找这样的方法。如何解决这个问题,而无需重命名我的Uber jar作为追加" E"在我的Jar名字前面没有意义。

1 个答案:

答案 0 :(得分:2)

此JBoss服务器包含hsqldb.jar版本1.8.0.x的副本供其内部使用。您可以将其替换为hsqldb-2.3.1.jar(重命名为原始jar的名称)的副本以避免冲突。