2012-12-04 12 views
5

私のシナリオは次のとおりです。Java Webアプリケーションで外部ライブラリをロード

サーブレットコンテナにデプロイされているWebApp.warがあります。このたwebapp.warは、以下のライブラリlibのWEB-INF /に含まれています

  • lib_a.jar

lib_b.jar私はできないことを、私は、lib_vendor.jarを言って、一つの他のライブラリを持っていますライセンス問題のためWebApp/WEB-INF/lib内にデプロイしてください。そのため、アプリケーションのインストール後にtomcat/libにこのライブラリをコピーさせていただきます。しかし、lib_vendor.jarはWebアプリケーションクラスローダーにロードされるlib_a.jarとlib_b.jarを必要とするため、lib_vendor.jarを使用することはできません。

WEB-INF/lib以外の外部ライブラリをWebアプリケーションの同じクラスローダにロードするにはどうすればよいですか?

+0

"ライセンスの問題があるため"ライセンスの問題を解決してみてください... – NimChimpsky

+0

あなたはクラスパスにライブラリを追加できますか。 'lib'ディレクトリに追加する必要はありません。 –

+0

NimChimpsky、そのライセンス問題を解決することはできません –

答えて

6

Tomcatを使用しているので、VirtualWebappLoaderを利用できます。

は正しく以下のコメントで述べたようにvirtualClasspath属性は、絶対パスでなければならないということも覚えておいてくださいMETA-INF/context.xml

whith
<?xml version="1.0" encoding="UTF-8"?> 
<Context path="/somepath/myapp"> 
    <Loader className="org.apache.catalina.loader.VirtualWebappLoader" 
       virtualClasspath="/somedir/*.jar"/> 
</Context> 

を追加します。

+1

これは本当に正しい答えであることを確認するだけです。[ここで](http://tomcat.10.x6.nabble.com/how-to-use-VirtualWebappLoader -e-in-in-META-INF-context-xml-or-programmatically-on-startup-tp2017324p2017326.html)、絶対パスでなければなりません。このような相対的なものは機能しません。 – lucasvc

+1

@datakeyありがとう、編集されました。 –

関連する問題