0

Tomcat に WAR ファイルをデプロイします。さらに、JARファイルがあります。

WAR ファイルを変更せずに、JAR ファイル内のクラスを WAR ファイル内のサービスで使用できるようにすることは可能ですか? それとも、WAR の WEB-INF/lib に追加されていますか?

JAR を に追加しようとしましたが、うまくいきlib/ません。Spring は起動時に org.springframework.beans.factory.BeanCreationException » java.lang.NoClassDefFoundError で失敗します。

編集

私は自分自身を解決不可能でアーキテクチャ的に醜い問題にしてしまったかもしれないことに気づきました。つまりね:

  • WARには参照があります<bean id="warService" class="com.war.Service" />
  • 私の JAR には、com.war.Service を拡張するクラス com.mystuff.MyService があります。
  • Bean 参照を次のように置き換えました<bean id="warService" class="com.mystuff.MyService" />
  • Spring が java.lang.NoClassDefFoundError: com.war.Service で失敗する
4

3 に答える 3

1

libまたは、フォルダーの下のTomcatルートディレクトリにそれ(jarファイル)を置くこともできます。これを確認してください:

http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html

あなたの編集ごとに

  1. あなたの瓶に何か問題があります
  2. アプリケーションコンテキストで完全修飾クラス名を間違えました

たまたまフォルダーにmysql-connector-java-5.0.8-binjarがありました。libそして、テストのために、これをアプリケーションコンテキストに入れました:

<bean id="driver" class="com.mysql.jdbc.Driver" />

魅力的に働いた、上記の2つのケースを確認してください

于 2012-05-07T11:28:51.930 に答える
0

Tomcat の lib ディレクトリを使用できますが、そこに追加されたすべての jar は、サーバー内のすべてのアプリで共有されています。

于 2012-05-07T11:29:38.597 に答える
0

推奨されませんが、このシナリオでは Tomcat の「共通」クラスローダーを使用できます。

http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html

于 2012-05-07T11:31:12.663 に答える