1

こちらの友人の助けを借りて、Jar ファイルを Confluence プロジェクトに追加するための依存関係と手順について理解することができました。しかし、これらの JAR を追加するとエラーが発生します。表示されるエラーの正確な原因は次のとおりです。

javax.servlet.ServletException: Servlet execution threw an exception
 at      org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:313) 

caused by: java.lang.ExceptionInInitializerError
 at org.apache.axis.attachments.AttachmentsImpl.<clinit>(AttachmentsImpl.java:39) 

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)

私がやろうとしていることは次のとおりです。

  1. カスタム プラグインを作成します。
  2. ユーザーが入力した値を受け入れることができるように UI を変更します。
  3. これらの資格情報を使用して Web サービス メソッドをヒットし、有効なユーザーのチケットを取得します。

現在、私はそれらを変更する権限を持っていない Web サービスのみを使用できます。その結果、8 つの重要な jar ファイルで動作します。これらのうち、私が作成したものではなく、私が使用しているものは人気のあるものです。

 commons-discovery 0.2
 commons-logging 1.1
 jaxrpc 1.0
 log4j 1.0
 wsdl4j
 1.0 axis 1.4

1.4 の代わりに軸 1.2.1 を使用する場合; エラーが発生します。

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.axis.description.ParameterDesc.setOmittable(Z)V

しかし、軸 1.4 を使用すると、ローカルの NON CONFLUENCE テスト サンプル Java プロジェクトで必要なチケットが得られます。(質問が非常に長くならないように、コードをペーストビンに入れています)

これは私のPOM.xmlです

これは私が書いたクラスです。実際、カスタム タブを [Advanced] 領域に追加することができました。タブをクリックすると、execute メソッドがトリガーされます。

これは、結果として表示されるシステム エラー (エラーが発生したというタイトルのエラー) に表示されるエラーです。

このエラーから抜け出すために何をする必要があるかを理解するのに大いに役立つヒントがあれば教えてください。

Confluence から Web サービスを呼び出すことは、複雑な雑用ではないと確信しています。私が頼りにしているJARの組み合わせが問題を引き起こしているのでしょうか。同じことへのリードは非常に役に立ちます。

4

1 に答える 1

0

Atlassian は axis ライブラリをフォークし、Jira は現在、Apache の最新の axis-1.4 ではなく、axis-1.3-atlassian-1 を使用しています。axis-1.3-atlassian-1 は、axis-1.4 のような 1.1.1 ではなく、commons-logging の 1.0.4 バージョンを使用します。

プラグインの依存関係を axis-1.4 から axis-1.3-atlassian-1 に変更すると、同様の問題が解決されました。SLF4JLogFactory は 1.0.4 では org.apache.commons.logging.LogFactory にキャストできたが、1.1.1 ではキャストできなかったのではないかと疑っていますが、テストしていません。

編集: ここで jar と source を入手できます

于 2012-07-30T21:21:42.937 に答える