14

Zajmuję aplikacji na GAE, przetestować witrynę lokalnie jednak w porządku, za każdym razem starałem się wdrożyć go do GAE zgłasza z Error: Server ErrorGAE 500 server error

The server encountered an error and could not complete your request. 
Please try again in 30 seconds. 

Szukałam dużo w google, wygląda na to, że żadna odpowiedź nie rozwiąże mojego pytania. Kiedy szukam logu w aplikacji GAE, poniżej znajduje się główny problem, który znalazłem do tej pory. Początkowo myślałem, że to z powodu JDK8, ale kiedy ustawię JDK8, nie mogę nawet uruchomić aplikacji lokalnie!

Uncaught exception from servlet 
java.lang.UnsupportedClassVersionError: org/apache/jsp/index_jsp : Unsupported major.minor version 52.0 
    at com.google.appengine.runtime.Request.process-aea5c804a9f29902(Request.java) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:795) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:360) 
    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:437) 
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:444) 
    at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:188) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:308) 
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:300) 
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:441) 
    at java.lang.Thread.run(Thread.java:724) 

Odpowiedz

17

To jest wskaźnik: Unsupported major.minor version 52.0. Dzieje się tak, gdy kompilujesz na wyższej wersji JDK (52 = java8), a następnie uruchamiasz ją w niższej wersji JRE (GAE używa java7).

GAE nie obsługuje jeszcze Java8, więc powinieneś skompilować w Javie7.

+1

ja nie skompilować pod java 7. – i3wangyi

+0

Lepiej dokładnie sprawdzić. 'version 52.0' oznacza, że ​​kod został skompilowany w języku Java8: (patrz: offset 6) http://en.wikipedia.org/wiki/Java_class_file#General_layout –

+3

Mam ten sam problem, a nawet wszystkie ustawienia wskazują Java 7, jakoś wdrożenie GAE kompiluje pliki JSP przy użyciu języka Java 8, jeśli jest obecna w systemie OSX. Sprawdzono także wygenerowane pliki w katalogu tmp, a wszystkie klasy Java są poprawne 51.0, ale klasy JSP to 52.0. Jakieś dalsze pomysły? – eeq

3

Natknęłam się na podobny problem. Moja konfiguracja jest OS X + JDK 6, 7 i 8, a w moim eclipse.ini miałem:

-vm /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/bin/java

Podobno będzie używać tego kompilatora bez względu na to, co można ustawić w preferencjach globalny/Project (I nawet usunięto JDK 8 z listy Zainstalowany JRE, bez powodzenia).

Po zmianie tego ustawienia na JDK 7 i ponownym wdrożeniu aplikacji GAE zadziałało.

8

Miałem ten sam problem w systemie Windows, gdy zainstalowano Java 8.

Próbowałem zmodyfikować ustawienia projektu/obszaru roboczego, ale mi to nie pomogło.

Więc stworzyłem następujący plik wsadowy jako obejście dla projektów GAE:

eclipse_gae.bat:

SET JAVA_HOME="C:\Program Files\Java\jdk1.7.0_55" 
SET PATH="%JAVA_HOME%\bin" 
START eclipse.exe 
+0

to jest genialne, ponieważ oznacza, że ​​nie musisz na stałe zmieniać PATH! Dzięki! – tomgeraghty3

+0

Świetnie, dzięki! Użył go z maven i musiał ustawić java home bez cytatów. Skrótem jest użycie Progra ~ 1 lub Progra ~ 2 (dla x86), aby uniknąć problemów ze spacjami i nawiasami jako [opublikowanymi na superużytkowniku] (http://superuser.com/a/606124). – oliverdm

+0

Ładne obejście! Dzięki – Smii

2

Musisz skompilować z Java 1.7. Ale jeśli masz pliki * .jsp, powinieneś całkowicie usunąć Java 1.8 z systemu. Jeśli używasz komputera Mac, here to sposób, w jaki możesz to zrobić.

5

Nie ma potrzeby całkowitego usuwania Java 8 z systemu MacOS. Wystarczy zmienić konfigurację Eclipse jak pokazano tutaj, aby zmusić go do kompilacji JSP jako Java 7: http://java.wildstartech.com/Java-Platform-Standard-Edition/mac-os-x-java-development/how-to-configure-eclipse-to-run-with-java-7-when-java-8-is-installed

+1

To jest odpowiedź, która działa. –

+0

Powinieneś zacytować i po prostu podać link do dalszych informacji. Tak jak w przypadku, gdy link się psuje lub zanika, twój post staje się bezużyteczny. – scenia

2

Jeśli używasz Gradle (np Android Studio) na mac, można obejść ten problem dodając następujące linie do góry Twojego gradlew skryptu:

# Insist on java 7 JAVA_HOME=$(/usr/libexec/java_home -v 1.7)

Odmiany tej metody powinny działać na innych platformach.

0

Jestem pewien, że ten został rozwiązany, ale tutaj jest rozwiązanie

GAE działa na java7 (wskazane przez pana Knego) tak Maven musi być kompilacji z java7.Wykonaj następujące czynności:

Wolę robić to wszystko w terminalu

profilu Edycja bash:

touch ~/.bash_profile; open ~/.bash_profile 

Set Java Home Directory,

#set JAVA_HOME 
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home 
export JAVA_HOME 

# For Apache Maven Commands 
export M2_HOME=/Users/your-username/your/path/to/maven/apache-maven-3.3.3 
export PATH=$PATH:$M2_HOME/bin 

Przejdź do folderu projektu (z pom.xml) i ponownie zainstalować czystą wersję maven

mvn clean install 

Przejdź do EAR lub WAR katalogu i wdrożyć nową wykonywania

mvn appengine:update 

Jeśli używasz punktów końcowych, należy zaktualizować końcowych bibliotek

4

Upewnij się, że wersja właściwości projektu -> Project Aspekty -> Java jest ustawiona na 1.7, a nie na 1.8.

to również ładnie wyjaśnione w sekcji Dokumentacja pluginu „Changing the JDK Compliance Level

+0

krótkie i precyzyjne rozwiązanie. –