私のJira5.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.loggingjarには、「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か...わかりません。
私はかなり困惑しています、そしてどんな指導もいただければ幸いです。
ここにも同様の質問がありますが、posterがorg.apache.axis.description.OperationDescではなくorg.apache.axis.attachments.AttachmentsImplの初期化からgetLogFactoryで同じ例外を取得していた点が異なります。(JiraではなくConfluenceプラグインでもあります。)しかし、誰もそこで応答しませんでした。