2012-12-04 2 views
2

나는 Grails를 구축 할 때 바람둥이와 2.1.0 응용 프로그램 2.2.0 내가 톰캣 7에 배포 할 때 내가 시작시 다음과 같은 오류가 발생합니다 :Grails의 전쟁

INFO: validateJarFile(/app/app/webapps/ROOT/WEB-INF/lib/tomcat-embed-core-7.0.27.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class Dec 1, 2012 4:01:01 PM org.apache.catalina.core.NamingContextListener lifecycleEvent SEVERE: Creation of the naming context failed: javax.naming.NamingException: Context is read only

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) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1128) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)

폭발 된 전쟁에서 tomcat- * jar 파일을 삭제하면 문제없이 응용 프로그램이 시작됩니다. 또는 tomcat 플러그인을 제거하면 문제없이 응용 프로그램이 시작됩니다. 이상적으로는 플러그인없이 앱을 제작하고 싶지만 개발 목적으로 만 사용해야합니다. 이것이 가능한가?

답변

3

처음에는 사용중인 Grails 버전에 해당하는 Tomcat 플러그인 버전을 사용하십시오. 실제 문제는 플러그인이 run-apprun-war 스크립트 용으로 만 개발 가능해야하지만 war 스크립트로 작성된 WAR 파일로 끝나지 않아야한다는 것입니다. application.properties에 플러그인이 있으면 다른 플러그인과 함께 제거하십시오. 그러면 플러그인이 compile 범위에 있으며 WAR 파일에 포함됩니다.

플러그인을 사용하는 올바른 방법은 BuildConfig.groovyplugins 섹션에서 build 범위 종속성을 추가하는 것입니다 : 나는 2.1.1에서이 문제가 발생하고있어

plugins { 
    runtime ":hibernate:$grailsVersion" 
    build ":tomcat:$grailsVersion" 
} 
+0

. 내 application.properties 파일에는 플러그인이 없으며 Tomcat 버전은'$ grailsVersion'입니다. Bamboo가 내 빌드를 처리합니다. 왜 이런 일이 일어나는 지 아십니까? –