2

Tomcat 2.2.0 で grails 2.1.0 アプリをビルドすると、Tomcat 7 にデプロイすると、起動時に次のエラーが表示されます。

情報: validateJarFile(/app/app/webapps/ROOT/WEB-INF/lib/tomcat-embed-core-7.0.27.jar) - jar がロードされていません。サーブレット仕様 2.3 のセクション 9.7.2 を参照してください。問題のあるクラス: javax/servlet/Servlet.class 2012 年 12 月 1 日 4:01:01 PM org.apache.catalina.core.NamingContextListener lifecycleEvent 重大: ネーミング コンテキストの作成に失敗しました: javax.naming.NamingException: コンテキストは読み取り専用です

java.lang.NoClassDefFoundError: org/apache/tomcat/PeriodicEventListener at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:634) at java.security.SecureClassLoader.defineClass(SecureClassLoader) .java:142) で org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818) で org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159) で org.apache.catalina. loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647) の org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) の org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1128) org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)

爆発した戦争で tomcat-* jar ファイルを削除すると、アプリは問題なく起動します。または、Tomcat プラグインを削除すると、アプリは問題なく起動します。理想的には、プラグインなしでアプリをビルドしたいのですが、開発目的で使用しています。これは可能ですか?

4

1 に答える 1

3

まず、使用している Grails のバージョンに対応するバージョンの Tomcat プラグインを使用します。run-appただし、実際の問題は、プラグインがおよびスクリプトの開発でのみ使用可能であるべきでありrun-war、スクリプトによって作成された WAR ファイルで終了してはならないことwarです。application.properties にプラグインがある場合は、それを削除します (そこにある他のプラグインと一緒に)。これにより、プラグインがcompileスコープ内に配置され、WAR ファイルに含まれるようになります。

プラグインを使用する正しい方法は、次のセクションにbuildスコープの依存関係を追加することです。pluginsBuildConfig.groovy

plugins {
   runtime ":hibernate:$grailsVersion"
   build ":tomcat:$grailsVersion"
}
于 2012-12-04T05:12:14.763 に答える