1

私のアプレットは2つのJARライブラリに依存しています。各JARライブラリは、xercesImpl-2.2.1.jarに依存しています。残念ながら、彼らはこれに異なる名前を付けたいと思っています。

  • Apache FOP 0.20.5

    • META-INF / MANIFEST.MFのエントリ:クラスパス:xercesImpl-2.2.1.jar .. ..
  • Apache Xalan 2.4.1

    • META-INF / MANIFEST.MFのエントリ:クラスパス:xercesImpl.jar .. ..

xercesImpl-2.2.1.jarがタグで指定されています。Javaコンソールで正常にダウンロードされていることがわかります。ただし、後でコンソールに、存在しないxercesImpl.jarを読み取ろうとする試みが表示されます。WebアプリケーションコードはxercesImpl.jarをどこにも指定していないため、これはXalanマニフェストから取得している必要があります。明らかに、実際にはすでにこのJARのコンテンツが利用可能であるため、実際にロードする必要はありません。

私はMavenを使用して依存関係を管理しており、マニフェストをハッキングすることなく、これら2つの標準のパブリックオープンソースライブラリを引き続き使用したいと考えています。これを解決するための最良の方法についての提案はありますか?それとも、Javaコンソールの誤ったエラーに対処する必要がありますか?

4

2 に答える 2

1

私はMavenの専門家ではありませんが、依存関係をそのままにして、JARファイルの1つをプロジェクトに「 入れたら」再パッケージ化するという「目標」をプロジェクトに与えるのがおそらく最善です。

おそらくそれを行う1つの方法は、「再パッケージ化されたJAR」アーティファクトを「fop」アーティファクトに依存させ、プロジェクトを「再パッケージ化されたJAR」アーティファクトに依存させることです。そんな感じ。

于 2011-01-10T14:04:12.993 に答える
0

これが私の最近の少しハックなアイデアです。クラスを含まない有効な空の JAR ファイルを作成し、それらを Class-Path 内のエントリの名前 ( xercesImpl.jar など) と呼びました。それらを src/main/webapp に配置して、適切な場所に含めるようにします。Java プラグインは、エラーをログに記録する代わりに、喜んでそれらをダウンロードします。

この方法では、ライブラリ JAR ファイル、Maven の依存関係、またはビルド プロセスを台無しにするのではなく、Web コンテンツをハックするだけで済みます (とにかく面倒です)。

より良い提案があれば、まだ開いています...

于 2011-02-03T14:35:13.303 に答える