ApacheKaraf(可能是java)在不同服务器上的不同行为

ApacheKaraf(可能是java)在不同服务器上的不同行为,java,linux,apache-karaf,Java,Linux,Apache Karaf,我在一台服务器(Server1)上收到一个错误(见下文),但在另一台服务器(Server2)上没有收到 以下是代码: GregorianCalendar c = new GregorianCalendar(); c.setTime(rs.getDate("claimDate")); XMLGregorianCalendar date2 = DatatypeFactory.newInstance().newXMLGregorianCalendar(c); 以下是错误: Caused by: j

我在一台服务器(Server1)上收到一个错误(见下文),但在另一台服务器(Server2)上没有收到

以下是代码:

GregorianCalendar c = new GregorianCalendar();
c.setTime(rs.getDate("claimDate"));
XMLGregorianCalendar date2 = 
DatatypeFactory.newInstance().newXMLGregorianCalendar(c);
以下是错误:

Caused by: java.lang.NoSuchMethodError: javax.xml.datatype.FactoryFinder.find(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
at javax.xml.datatype.DatatypeFactory.newInstance(DatatypeFactory.java:49) ~[?:?]
Java版本相同(build 1.8.0_92-b14)

我使用了一个定制的Karaf发行版(),它部署在两个不同的服务器上(不同的物理机器和Ubuntu版本)

服务器1:Linux karaf1 2.6.32-358.el6.x86#u 64#1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 GNU/Linux

Server2:Linux newproger 3.13.0-142-generic#191 Ubuntu SMP Fri Feb 2 12:13:35 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux


启动脚本和java参数都是相同的。

可能是karaf-Approved lib文件夹(
apache-karaf-x.x.x/lib/Approved
)中的某个jar文件覆盖了
javax.xml.datatype.FactoryFinder
类(来自rt.jar)

如果您在程序集pom(在karaf maven插件中)中使用
标记,请尝试查找包含
javax.xml.datatype
包的jar(在我的示例中是-
org.apache.servicemix.specs.jaxp api
),并将其删除。在下面的示例中可以找到它:

<plugin>
            <groupId>org.apache.karaf.tooling</groupId>
            <artifactId>karaf-maven-plugin</artifactId>
            <version>${karaf.version}</version>
            <configuration>
                <startupFeatures>
                    <feature>eventadmin</feature>
                </startupFeatures>
                <installedFeatures>

                    <feature>wrapper</feature>
                </installedFeatures>
                <bootFeatures>
                    <!-- karaf standard -->
                    <feature>jaas</feature>
                    <feature>wrap</feature>
                     (...)
                    <feature>hibernate</feature>
                    <feature>transaction</feature>
                    <feature>jpa</feature>
                </bootFeatures>

                <libraries>

                </libraries>
                <javase>${java.version}</javase>
            </configuration>
        </plugin>

org.apache.karaf.tooling
KarafMaven插件
${karaf.version}
事件管理员
包装纸
jaas
包
(...)
冬眠
交易
jpa
${java.version}

它解决了这个问题。非常感谢。知道为什么它在不同的服务器上表现不同吗?