1

私が現在取り組んでいるプロジェクトは標準の Web アプリケーションであり、組み込みの tomcat (mvn tomcat7:run) で開始したいと考えています。META-INF/context.xml 内にエントリがあります

<Loader className="org.apache.catalina.loader.VirtualWebappLoader"
        virtualClasspath="${home}/lib"/>  

Web アプリケーションのクラスパスを拡張します。

mvn tomcat7:run を使用して Web アプリケーションを開始すると、多くの ClassNotFoundExceptions が発生します。

java.lang.ClassNotFoundException: org.apache.catalina.deploy.ServletDef

投げられます。

context.xmlでクラスパスを拡張しながら、Tomcatプラグインを使用して埋め込まれたTomcatを動作させる方法はありますか?

4

1 に答える 1

4

この問題の解決策は、Tomcat プラグインが Maven とは別のクラス ローダーを使用するように設定することです。これはuseSeparateTomcatClassLoader、プラグインへのパラメーターを true に設定することによって行われます。これは、Tomcat プラグイン構成で行うことができます。

<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <configuration>
    <contextReloadable>true</contextReloadable>
    <useSeparateTomcatClassLoader>true</useSeparateTomcatClassLoader>
  </configuration>
</plugin>

または、Tomcat プラグインの起動に使用するコマンド ラインで:

mvn tomcat7:run -Dtomcat.useSeparateTomcatClassLoader=true

参照: http://tomcat.apache.org/maven-plugin-2.1/tomcat7-maven-plugin/run-mojo.html

于 2014-06-20T00:27:03.813 に答える