Ошибка сервера 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)
Ответы
Ответ 1
Это контрольный сигнал: Unsupported major.minor version 52.0
. Это происходит, когда вы компилируете более высокую версию JDK (52 = java8), а затем выполняете ее в нижней версии JRE (GAE использует java7).
GAE пока не поддерживает Java8, поэтому вы должны скомпилировать под Java7.
Ответ 2
У меня была такая же проблема для 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
Ответ 3
нет необходимости полностью удалять 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
Ответ 4
Убедитесь, что для версии Project Properties → Fac Facets → Java установлено значение 1.7, а не 1.8.
Это также хорошо объяснено в разделе документации плагина " Изменение уровня соответствия JDK
Ответ 5
У меня возникла аналогичная проблема. Моя настройка - OS X + JDKs 6, 7 и 8, и в моем eclipse.ini у меня было:
-vm
/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/bin/java
По-видимому, он будет использовать этот компилятор независимо от того, что вы установили в настройках глобального/проекта (я даже удалил JDK 8 из списка Installed JRE, не получив успеха).
Как только я изменил это, чтобы использовать JDK 7 и перераспределить приложение GAE, оно сработало.
Ответ 6
Вам нужно скомпилировать с Java 1.7. Но если у вас есть файлы *.jsp, вы также должны полностью удалить Java 1.8 из системы. Если вы используете Mac, здесь, как вы можете это сделать.
Ответ 7
Если вы используете gradle (например, Android Studio) на Mac, вы можете обойти эту проблему, добавив следующие строки в верхнюю часть вашего gradlew script:
# Insist on java 7
JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
Вариации этого метода должны работать на других платформах.
Ответ 8
Я уверен, что это было разрешено, но вот решение
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
Если вы используете конечные точки, вы должны обновить свои библиотеки конечных точек