1

Nexusをリポジトリマネージャーとして使用するMavenプロジェクトに取り組んでいます。要するに、「Business」(.jar にパッケージ化)、「Web」(.war にパッケージ化)、「ear」(全体を .ear にパッケージ化) の 3 つの部分があります。

私は完全に正常に動作していましたが、最近、「カスタム」jar (md5 パスワード変換用) をリポジトリに追加しようとしましたが、うまく機能しませんでした。次のことを行いました。

  • Web サイト ( www.twmacinta.com )から Java ファイルを入手して、md5 で文字列を変換しました。
  • それを私のプロジェクトでJavaファイルとして使用しましたが、完全にうまく機能したので、それからjarファイルを作成することにしました。
  • ソースを javac でコンパイルしました。
  • 「jar」コマンドを使用してアーカイブを作成しました (「com/twmacinta/util/MD5-2.7.1.jar」)。
  • Nexus に接続し、jar をアップロードします。
  • Businness 部分の pom.xml ファイルに移動し、「依存関係」タブと「追加...」タブを使用して依存関係を追加し (jar が見つかりましたが、問題ありません)、これを pom.xml ファイルに追加します。

    <dependency>
       <groupId>com.twmacinta.util</groupId>
       <artifactId>MD5</artifactId>
       <version>2.7.1</version>
    </dependency>
    
  • 次のように、ビジネスクラスにインポートを追加しました(インポートは自動的に検出されましたが、問題ありません)。

    import com.twmacinta.util.MD5;

この時点でエラーはないので、クリーン/インストール/再デプロイに進みます。すべて問題ありません。

しかし、アプリケーションにログインしようとすると、次の例外が発生しました。

java.lang.ClassNotFoundException: com.twmacinta.util.MD5
     at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
     at java.security.AccessController.doPrivileged(Native Method)
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
     [...]

MD5-2.7.1.jar は、Business と ear の MavenDependencies に表示されます。これは、私が既に使用している他のライブラリのように見えます (私が知る限り)。

助けてください=)

ニコラス

4

3 に答える 3

1

ライブラリが耳や戦争にバンドルされていないようです。
依存関係をどこにバンドルしますか?

  • ...戦争/web-inf/lib
  • または ...ear/lib

両方のアーカイブの内部を確認し、他の外部ライブラリがバンドルされている場所を確認してから、それらが親、または war または ear モジュールで依存関係として宣言されているかどうかを確認します。

編集:
では、作成した jar ファイルの内容を確認してください。
MD5-2.7.1.jar に対して次のコマンドを実行します。
jar -tvf MD5-2.7.1.jar
これにより、ファイルの内容が一覧表示されます。com/twmacinta/util/MD5.classが jar のルートに一覧表示されていること、および追加のサブディレクトリが存在することを確認してください。 jar に含まれていないため、 build/com/twmacinta/util/MD5.classなどのクラス エントリが生成され ます。
また、ソースを調べた後、ライブラリがネイティブ JNI または Java 実装に対応していることに気付きました。さまざまなシステム プロパティを使用してネイティブ インターフェイスを無効にする方法があります。そうしないと、適切なネイティブ ライブラリが利用可能であることを確認する必要があります。予想される場所にあります。

于 2011-02-25T14:17:32.373 に答える
1

jar ファイルはcom/twmacinta/util/MD5/2.7.1/MD5-2.7.1.jarに配置する必要があります。

他のアーティファクトと比較してください。これが、Maven 2+ での jar の編成方法です。

于 2011-02-25T13:39:09.490 に答える
1

アプリケーションが適切に公開されていない可能性があります..

于 2011-02-25T13:58:15.030 に答える