【问题标题】:Different behavior of Apache Karaf (maybe java) on different servers不同服务器上 Apache Karaf(可能是 java)的不同行为
【发布时间】:2019-01-09 03:58:45
【问题描述】:

我在一台服务器 (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 版本相同(内部版本 1.8.0_92-b14)。

我使用了一个自定义的 Karaf 发行版 (https://karaf.apache.org/manual/latest/#_custom_distributions),我将它部署在两台不同的服务器(不同的物理机和 Ubuntu 版本)上。

Server1:Linux karaf1 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 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参数都一样。

【问题讨论】:

    标签: java linux apache-karaf


    【解决方案1】:

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

    如果您在程序集 pom 中使用 <libraries> 标签(在 karaf-maven-plugin 中) - 尝试找到包含 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>
    

    【讨论】:

    • 它解决了这个问题。谢谢!知道为什么它在不同服务器上的行为不同吗?
    猜你喜欢
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 2016-01-01
    • 2013-12-18
    • 2022-01-02
    • 2014-01-02
    相关资源
    最近更新 更多