2013-05-01 3 views
0

Maven의 아키타 유형 com.google.appengine.archetypes:guestbook-archetype을 사용하여 만든 Google의 방명록 프로젝트 예가 있습니다. mvn appengine:devserver을 사용하여 로컬에서 실행하면 문제가 발생하지만 Google의 Appspot에 배포하려고하면 문제가 발생합니다. 나는이 볼 수있는 로그에Appspot 서버에 배포 한 후 GAE - ClassNotFoundException

Error: Server Error 

The server encountered an error and could not complete your request. 
If the problem persists, please report your problem and mention this error message and the query that caused it. 

:

2013-05-01 05:38:28.356/500 3166ms 0kb Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31 
2001:6d8:10:a014:5176:bdbe:c152:53c0 - - [01/May/2013:05:38:28 -0700] "GET/HTTP/1.1" 500 0 - "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31" "aghinzop.appspot.com" ms=3167 cpu_ms=2100 loading_request=1 app_engine_release=1.7.7 instance=00c61b117cdf51947e909cbfaf52e1739a7f4c 
W 2013-05-01 05:38:28.325 
EXCEPTION 
java.lang.ClassNotFoundException: ioserv.ioserv.SignGuestbookServlet 
    at com.google.appengine.runtime.Request.process-53e8711216f37199(Request.java) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:359) 
    at org.mortbay.util.Loader.loadClass(Loader.java:91) 
    at org.mortbay.util.Loader.loadClass(Loader.java:71) 
    at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:73) 
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685) 
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) 
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250) 
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) 
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:480) 
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:487) 
    at com.google.tracing.TraceContext.runInContext(TraceContext.java:774) 
    at com.google.tracing.TraceContext$DoInTraceContext.runInContext(TraceContext.java:751) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:342) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:334) 
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:484) 
    at java.lang.Thread.run(Thread.java:722) 
E 2013-05-01 05:38:28.326 
javax.servlet.ServletContext log: unavailable 
javax.servlet.UnavailableException: ioserv.ioserv.SignGuestbookServlet 
    at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:79) 
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685) 
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) 
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250) 
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) 
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:219) 
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:194) 
    at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:134) 
    at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:438) 
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:480) 
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:487) 
    at com.google.tracing.TraceContext.runInContext(TraceContext.java:774) 
    at com.google.tracing.TraceContext$DoInTraceContext.runInContext(TraceContext.java:751) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:342) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:334) 
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:484) 
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251) 
    at java.lang.Thread.run(Thread.java:722) 
W 2013-05-01 05:38:28.338 
Failed startup of context [email protected]11c3e97{/,/base/data/home/apps/s~aghinzop/1.367061823227494749} 
java.lang.NullPointerException 
    at java.lang.Class.isAssignableFrom(Native Method) 
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685) 
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) 
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250) 
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) 
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:219) 
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:194) 
    at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:134) 
    at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:438) 
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:480) 
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:487) 
    at com.google.tracing.TraceContext.runInContext(TraceContext.java:774) 
    at com.google.tracing.TraceContext$DoInTraceContext.runInContext(TraceContext.java:751) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:342) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:334) 
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:484) 
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251) 
    at java.lang.Thread.run(Thread.java:722) 
C 2013-05-01 05:38:28.342 
Uncaught exception from servlet 
javax.servlet.UnavailableException: Initialization failed. 
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:228) 
    at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:194) 
    at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:134) 
    at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:438) 
    at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:480) 
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:487) 
    at com.google.tracing.TraceContext.runInContext(TraceContext.java:774) 
    at com.google.tracing.TraceContext$DoInTraceContext.runInContext(TraceContext.java:751) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:342) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:334) 
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:484) 
    at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251) 
    at java.lang.Thread.run(Thread.java:722) 
I 2013-05-01 05:38:28.355 
This request caused a new process to be started for your application, and thus caused your application code to be loaded for the first time. This request may thus take longer and use more CPU than a typical request for your application. 

가 여기에 내가 이클립스에있는 기본 설정 및 배포 로그 (I 앱 엔진 이클립스 플러그인 사용)이다 나는 다음과 같은 메시지가 나타납니다.

enter image description here

나는 "이것이 Maven 프로젝트를 사용할 수 있기 때문에"여기 무슨 뜻인지 모르겠어요. 설명해 주시겠습니까? 이 상자를 체크해야합니까? 앱 엔진 SDK는 여기에서 선택한

enter image description here

는 Eclipse 플러그인에 의해 제공되는 것입니다. 여기

enter image description here

는 플러그에 의해 제공 라이브러리들이다. 또한 아키 타입에 추가 된 Maven 라이브러리가 있습니다.

enter image description here

그리고 여기는 WEB-INF/lib 디렉토리에있는 libs가 있습니다. 나는 그들 중 극소수 만이 있다는 것을 알 수 있으며, 뭔가 빠져있을 수 있다는 것을 깨닫는다. 문제는 내가 Cannot paste the clipboard contents into the selected elements을 얻는이 폴더에 libs를 복사하려고 할 때입니다. 어떻게해야합니까? 일반적인 동적 웹 프로젝트 (이 패싯 사용)에서는 Properties>Deployment Assembly>Add과 같이 간단하지만 여기서는 실마리가 없습니다.

정말 감사드립니다. 고맙습니다!

답변

1

여기는 "Maven 프로젝트이므로 사용하지 않도록 설정되었습니다."라는 의미입니다. 설명해 주시겠습니까? 이 상자를 체크해야합니까?

응용 프로그램 (특히 웹 폴더)을 관리하는 데는 두 가지 방법이 있으며, 하나는이를 수행하고 다른 하나는 Google 이클립스 플러그인에서 수행하는 두 가지 방법이 있습니다. 응용 프로그램이 메이븐 (maven)에 의해 만들어 졌기 때문에, 기본 가정은 웹 앱 관리가 메이븐 자체에 의해 수행되므로, 구글 이클립스 플러그인은 기본적으로이를 비활성화했다. Maven을 제거하지 않는 한 그대로 있어야합니다.

maven을 통해 구축하고 테스트 중이지만 내 생각에 mvn appengine : update를 시도해보십시오. 작동하지 않으면 오류가 발생합니다.

도움이 되길 바랍니다.

+0

답장을 보내 주셔서 감사합니다. 그걸로 거의 하루 종일의 투쟁 후, 나는 여기에 설명 된 또 하나의 해결책을 시도했다 : http://javanto.com/blog/2012/01/11/gae-eclipse-maven-2-0/ 이것으로 나는 꽤 멀리 갔다. Hibernate에 대한 지원이 극히 제한적이며 JPA2를 지원하지 않는다는 것을 알았을 때 App Engine을 완전히 포기했습니다. 이제 cloudbees.com에서 개발 중이며 Tomcat/Spring/Hibernate/Maven으로 전체 스택을 지원하고 약 1 시간 만에 실행됩니다. 우리는 그들이 나에게 나중에 청구하지 않을 것인지 알 것이다. 그러나 지금까지 그것이 자유로 와야한다라고 말한다. – Wojtek

+0

마침내 진보를 이룰 수 있었고 클라우드로 잘할 수 있기를 바랍니다. App Engine은 [JPA 2] (https://developers.google.com/appengine/docs/java/datastore/jpa/)를 지원합니다. – skywalker

+0

지적 해 주셔서 감사합니다. 뭔가 잘못 읽었어야합니다. 어제 조금 피곤했다. 하지만 여전히 App Engine은 너무 제한적이어서 너무 많은 제약을 부과하고 있습니다. – Wojtek

관련 문제