Ошибка сервера GAE 500

Я разрабатываю приложение в GAE, я отлично тестирую веб-сайт локально, однако каждый раз, когда я пытаюсь развернуть его в GAE, он сообщает об ошибке: Ошибка сервера

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

Я много искал в Google, кажется, ни один ответ не мог решить мой вопрос. Когда я ищу журнал в приложении GAE, следующая основная проблема, которую я обнаружил до сих пор. Первоначально я думал, что это связано с JDK8, но когда я установил JDK8, я даже не могу запустить приложение локально!

    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)

person i3wangyi    schedule 25.04.2014    source источник


Ответы (8)


Это контрольная история: Unsupported major.minor version 52.0. Это происходит, когда вы компилируете JDK более высокой версии (52 = java8), а затем выполняете его в более низкой версии JRE (GAE использует java7).

GAE пока не поддерживает Java8, поэтому вам следует компилировать под Java7.

person Peter Knego    schedule 25.04.2014
comment
Я компилировал под java 7. - person i3wangyi; 25.04.2014
comment
Лучше перепроверьте. version 52.0 означает, что код был скомпилирован под Java8: (см. смещение 6) en.wikipedia.org/wiki/Java_class_file #Общий_макет - person Peter Knego; 25.04.2014
comment
У меня та же проблема, и даже все настройки указывают на Java 7, развертывание GAE каким-то образом компилирует файлы JSP с использованием Java 8, если они присутствуют в OSX. Также проверены сгенерированные файлы в каталоге tmp, и все классы Java имеют правильный номер 51.0, но классы JSP имеют номер 52.0. Любые дальнейшие идеи? - person eeq; 27.05.2014
comment
Была точно такая же проблема, когда все настройки были установлены на Java 7, но eclipse использовала Java 8 для файлов JSP. Единственное решение, которое я нашел, это удаление Java 8 из моей системы. - person JaapH; 09.06.2014
comment
У меня была точно такая же проблема, и у меня ДАЖЕ НЕТ JDK8 НА МОЕЙ МАШИНЕ :), но я решил ее после очистки всего перед сборкой + развертыванием, например, mvn clean appengine:update - person the_marcelo_r; 24.12.2014
comment
Верно, что версия компиляции неверна, к сожалению, обновление движка приложения компилирует JSP с Java 8, даже если в настройках компилятора mvn установлена ​​Java 7. Вам нужно установить для переменной JAVA_HOME значение java 7, как указано в других ответах. - person Scott Boring; 29.05.2015
comment
Решил проблему переходом на Java 1.7 в Свойства -> Фасеты проекта - person kike; 27.07.2015
comment
Та же проблема, я сделал все шаги: измените JAVA_HOME на 7, maven - 3.3.9 и указывает на дом Java 7, у меня есть плагин в maven, в котором указано, что нужно строить с Java 7, у меня нет никакого JSP, просто один простой HttpServlet, который распечатывает привет, мир. в целевой папке я проверил версию .class, и там написано 51.0, но тем не менее, когда я развертываю из командной строки с помощью mvn clean appengine:update (не из Eclipse), у меня возникает та же ошибка. Что я делаю неправильно? - person Giuseppe Adaldo; 08.09.2016

У меня была такая же проблема в Windows, когда была установлена ​​Java 8.

Я попытался изменить настройки проекта/рабочей области, но это мне не помогло.

Итак, я создал следующий пакетный файл в качестве обходного пути для проектов GAE:

eclipse_gae.bat:

SET JAVA_HOME="C:\Program Files\Java\jdk1.7.0_55"
SET PATH="%JAVA_HOME%\bin"
START eclipse.exe
person craigrs84    schedule 23.07.2014
comment
это блестяще, так как это означает, что вам не нужно постоянно менять ПУТЬ! Спасибо! - person tomgeraghty3; 26.11.2014
comment
Большое спасибо! Использовал его с maven и должен был установить дом java без кавычек. Быстрее всего использовать Progra~1 или Progra~2 (для x86), чтобы избежать проблем с пробелами и круглыми скобками, как опубликовано для суперпользователя. - person oliverdm; 19.12.2014

нет необходимости полностью удалять Java 8 из MacOS. Просто перенастройте Eclipse, как показано здесь, чтобы заставить его компилировать JSP как 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

person icordoba    schedule 27.11.2014
comment
Вы должны процитировать и просто предоставить ссылку для получения дополнительной информации. Как бы то ни было, если ссылка не работает или не работает, ваш пост становится бесполезным. - person scenia; 18.06.2015

Убедитесь, что версия Project Properties -> Project Facets -> Java установлена ​​на 1.7, а не на 1.8.

Это также хорошо объяснено в разделе документации плагина 'Изменение уровня соответствия JDK'.

person Ridcully    schedule 24.10.2015
comment
короткое и точное решение. - person Prateek Joshi; 29.04.2016

Я столкнулся с похожей проблемой сейчас. Моя установка - OS X + JDK 6, 7 и 8, и в моем eclipse.ini у меня было:

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

По-видимому, он будет использовать этот компилятор независимо от того, что вы установили в глобальных/проектных настройках (я даже удалил JDK 8 из списка установленных JRE, но безуспешно).

Как только я изменил это, чтобы использовать JDK 7, и повторно развернул свое приложение GAE, оно сработало.

person Miloš Ranđelović    schedule 26.06.2014

Вы должны скомпилировать с Java 1.7. Но если у вас есть файлы *.jsp, вы также должны полностью удалить Java 1.8 из системы. Если вы используете Mac, вот вы можете это сделать.

person Denis Kutlubaev    schedule 08.08.2014

Если вы используете gradle (например, Android Studio) на Mac, вы можете обойти эту проблему, добавив следующие строки в начало скрипта gradlew:

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

Варианты этого метода должны работать на других платформах.

person Tad    schedule 07.01.2015

Я уверен, что это было решено, но вот решение

GAE работает на java7 (как указал г-н Кнего), поэтому maven должен компилироваться с java7. Сделайте следующее:

Я предпочитаю делать все это в терминале

Изменить профиль bash:

touch ~/.bash_profile; open ~/.bash_profile

Установить домашний каталог Java

#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

Перейдите в папку своего проекта (с pom.xml) и переустановите чистую версию maven.

mvn clean install

Перейдите в каталог EAR или WAR и выполните развертывание с новой средой выполнения.

mvn appengine:update

Если вы используете конечные точки, вам следует обновить библиотеки конечных точек.

person PSchuette    schedule 06.07.2015