我的 Jira 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 jar 中是“commons-logging.properties”。
我尝试在插件的资源目录中创建一个 commons-logging.properties 文件;该文件包含以下内容:
priority=1
org.apache.commons.logging.Log=org.apache.commons.logging.impl.LogFactoryImpl
...但它似乎被忽略了,因为 getLogFactory() 仍然得到 SLF4JLogFactory 并且无法转换它。所以它看起来像:
- 这个 commons-logging.properties 文件需要在其他地方
- 我需要将日志记录类设置为别的
- 该项目配置错误,可能在 Jira 级别,或者可能在插件或 Maven 或......我什至不知道
我很困惑,并希望得到任何指导。
这里有一个类似的问题,除了海报在 getLogFactory 中从 org.apache.axis.attachments.AttachmentsImpl 而不是 org.apache.axis.description.OperationDesc 的初始化中得到了相同的异常。(也是一个 Confluence 插件,而不是 Jira。)但是没有人在那里回应。