1

Base64 エンコーディングに依存する新しいセキュリティ Bean を実装しようとしています。Eclipse では、クラスは問題なくコンパイルされます。実際、ローカルで実行されている tomcat にデプロイされたときにビルドされます。ただし、コードが実際に呼び出した行に到達したとき

Base64.encodeBase64String(rawBytes)

私はこれを得る

SEVERE: Servlet.service() for servlet analytics threw exception
java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64String([B)Ljava/lang/String;

必要なタイプ(org.apache.commons.codec.binary.Base64)をインポートするように注意し、メソッドの絶対パッケージ名を使用するように呼び出しを変更しようとしました。

プロジェクトの pom.xml を調べると、Apache サイトによると、次のものが存在し、正しいアーティファクトであることがわかります。

    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
    </dependency>

Eclipse の依存関係階層ビューを見ると、コンパイル時にバージョン 1.4 (問題のクラスを含む) に commons-codec jar が含まれています。

こちらの同様の質問で、Tomcat の作業ディレクトリを削除することが提案されていたので、それを実行しても無駄でした。私は正確には maven や tomcat の専門家ではないので、どんな提案も役に立ちます。これは非常に具体的な問題であることを認識しているため、いくつかの手がかりを期待してこれを投稿し、問題を自分自身で明確にします。ただし、正しい方向を指す回答はすべて受け入れます。

4

1 に答える 1

1

ライブラリの最新バージョンを使用してみてください。

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>20041127.091804</version>
</dependency>
于 2012-07-16T17:46:54.807 に答える