-->

Apache的轴测井 - ClassCastException异常,而使用它一个吉拉插件内(Apa

2019-09-20 11:28发布

我吉拉5.0插件是中断与以下异常:

java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        ...
Caused by: java.lang.ExceptionInInitializerError
    at org.apache.axis.description.OperationDesc.<clinit>(OperationDesc.java:65)
    at com.xyz.germander.AddTestTrackLinkDialogAction.doConfirm(AddTestTrackLinkDialogAction.java:23)
    ... 148 more
Caused by: java.lang.ClassCastException: org.apache.commons.logging.impl.SLF4JLogFactory cannot be cast to org.apache.commons.logging.LogFactory
    at org.apache.axis.components.logger.LogFactory.getLogFactory(LogFactory.java:41)
    at org.apache.axis.components.logger.LogFactory.<clinit>(LogFactory.java:33)
    ... 150 more

作为参考,这是投掷ClassCastException异常的方法:

private static final org.apache.commons.logging.LogFactory getLogFactory() {
    return (org.apache.commons.logging.LogFactory)
        AccessController.doPrivileged(
            new PrivilegedAction() {
                public Object run() {
                    return DiscoverSingleton.find(org.apache.commons.logging.LogFactory.class,
                                   org.apache.commons.logging.LogFactory.FACTORY_PROPERTIES,
                                   org.apache.commons.logging.LogFactory.FACTORY_DEFAULT);
                }
            });
}

...作进一步参考,org.apache.commons.logging.LogFactory.FACTORY_DEFAULT是“org.apache.commons.logging.impl.LogFactoryImpl”,并FACTORY_PROPERTIES应该是属性文件的搜索,它的名称在我org.apache.commons.logging罐子“commons-logging.properties”。

我试图创建的插件的资源目录一commons-logging.properties文件; 该文件包含此:

priority=1
org.apache.commons.logging.Log=org.apache.commons.logging.impl.LogFactoryImpl

......但似乎因为getLogFactory()仍然得到SLF4JLogFactory并未能投它会被忽略。 所以它看起来像:

  • 这commons-logging.properties文件需要在别处
  • 我需要设置日志类别的东西
  • 该项目是配置有误,也许在吉拉水平或许在插件或可能的Maven或者......我甚至不知道

我很为难,并希望任何指导。

还有一个类似的问题在这里 ,除了海报从org.apache.axis.attachments.AttachmentsImpl代替org.apache.axis.description.OperationDesc的初始化中获得的getLogFactory相同的异常。 (也汇合插件,而不是吉拉。)没有人回应那里,虽然。

Answer 1:

包括轴-1.3-Atlassian的-1只结果

java.lang.ClassNotFoundException: org.apache.axis.transport.http.AdminServlet

由于我的应用程序需要包含在appache轴库AdminServlet。 最后,当我同时它正常工作与我。

    <dependency>
        <groupId>org.apache.axis</groupId>
        <artifactId>axis</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>axis</groupId>
        <artifactId>axis</artifactId>
        <version>1.3-atlassian-1</version>
        <scope>provided</scope>
    </dependency>


Answer 2:

发现:Atlassian的叉轴库和吉拉现在使用轴-1.3-Atlassian的-1,而不是最新的轴1.4 Apache的; 轴-1.3-Atlassian的-1使用1.0.4版本共享记录的,而不是像1.1.1轴-1.4。

更改插件从轴1.4的依赖于轴线-1.3-Atlassian的-1解决了这个问题。 这是我的怀疑,SLF4JLogFactory可以转换为org.apache.commons.logging.LogFactory在1.0.4但不是1.1.1,但我没有测试它。

如果在JIRA中,一定要给依赖的范围为“提供”,否则你会运行中由于东西被加载两次的问题。 这里有一个POM片段:

    <dependency>
        <groupId>axis</groupId>
        <artifactId>axis</artifactId>
        <version>1.3-atlassian-1</version>
        <scope>provided</scope>
    </dependency>


文章来源: Apache axis logging - ClassCastException while using it inside a Jira plugin