Kesalahan server GAE 500

Saya sedang mengembangkan aplikasi di GAE, saya menguji situs web secara lokal dengan baik, namun setiap kali saya mencoba menyebarkannya ke GAE, ia melaporkan dengan Kesalahan: Kesalahan Server

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

Saya banyak mencari di Google, sepertinya tidak ada jawaban yang bisa menyelesaikan pertanyaan saya. Saat saya mencari log di aplikasi GAE, berikut adalah masalah utama yang saya temukan sejauh ini. Awalnya, saya pikir ini karena JDK8 tetapi ketika saya mengatur JDK8 saya bahkan tidak bisa menjalankan aplikasi secara lokal!

    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 sumber


Jawaban (8)


Ini buktinya: Unsupported major.minor version 52.0. Ini terjadi ketika Anda mengkompilasi pada versi JDK yang lebih tinggi (52 = java8) dan kemudian menjalankannya pada versi JRE yang lebih rendah (GAE menggunakan java7).

GAE belum mendukung Java8, jadi Anda harus mengkompilasinya menggunakan Java7.

person Peter Knego    schedule 25.04.2014
comment
Saya melakukan kompilasi di bawah Java 7. - person i3wangyi; 25.04.2014
comment
Lebih baik periksa ulang. version 52.0 berarti kode dikompilasi di bawah Java8: (lihat offset 6) en.wikipedia.org/wiki/Java_class_file #Tata Letak_Umum - person Peter Knego; 25.04.2014
comment
Saya memiliki masalah yang sama, dan bahkan semua pengaturan menunjukkan Java 7, penerapan GAE entah bagaimana mengkompilasi file JSP menggunakan Java 8 jika ada di OSX. Periksa juga file yang dihasilkan di direktori tmp dan semua kelas Java dengan benar 51.0, tetapi kelas JSP adalah 52.0. Ada ide lebih lanjut? - person eeq; 27.05.2014
comment
Punya masalah yang persis sama ketika semua pengaturan diatur ke Java 7 tetapi Eclipse menggunakan Java 8 untuk file JSP. Satu-satunya solusi yang saya temukan berhasil adalah menghapus Java 8 dari sistem saya - person JaapH; 09.06.2014
comment
Saya memiliki masalah yang persis sama dan SAYA TIDAK MEMILIKI JDK8 DI MESIN SAYA :) tetapi saya menyelesaikannya setelah membersihkan semuanya sebelum build+deploy, misalnya, mvn clean appengine:update - person the_marcelo_r; 24.12.2014
comment
Benar bahwa versi kompilasi salah, sayangnya pembaruan mesin aplikasi mengkompilasi JSP dengan Java 8 meskipun pengaturan kompiler mvn disetel ke Java 7. Anda harus mengatur variabel JAVA_HOME ke java 7 seperti yang dinyatakan dalam jawaban lain. - person Scott Boring; 29.05.2015
comment
Saya memecahkan masalah dengan mengubah ke Java 1.7 di Properties -› Project Facets - person kike; 27.07.2015
comment
Masalah yang sama, saya melakukan semua langkah: ubah JAVA_HOME menjadi 7, maven adalah 3.3.9 dan menunjuk ke Java 7 home, saya memiliki plugin di maven yang menyatakan untuk membangun dengan Java 7, saya tidak punya JSP, hanya satu HttpServlet sederhana yang mencetak hello world. di folder target, saya memeriksa versi .class dan dikatakan 51.0, tapi tetap saja, ketika saya menyebarkan dari baris perintah dengan mvn clean appengine:update (bukan dari Eclipse) saya memiliki kesalahan yang sama. Apa yang saya lakukan salah? - person Giuseppe Adaldo; 08.09.2016

Saya mengalami masalah yang sama pada Windows ketika Java 8 diinstal.

Saya mencoba mengubah pengaturan proyek/ruang kerja tetapi tidak membantu saya.

Jadi, saya membuat file batch berikut sebagai solusi untuk proyek 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
ini brilian karena ini berarti Anda tidak perlu mengubah PATH secara permanen! Terima kasih! - person tomgeraghty3; 26.11.2014
comment
Terima kasih banyak! Digunakan dengan maven dan harus mengatur java home tanpa tanda kutip. Jalan pintasnya adalah menggunakan Progra~1 atau Progra~2 (untuk x86) untuk menghindari masalah spasi dan tanda kurung seperti yang diposting di pengguna super. - person oliverdm; 19.12.2014

tidak perlu menghapus Java 8 sepenuhnya dari MacOS. Konfigurasikan ulang Eclipse seperti yang ditunjukkan di sini untuk memaksanya mengkompilasi JSP sebagai Java 7: http://java.wildstartech.com/Java-Platform-Standard-Edition/mac-os-x-java-development/how-untuk-mengonfigurasi-Eclipse-to-run-with-java-7-when-java-8-is-installed

person icordoba    schedule 27.11.2014
comment
Anda harus mengutip dan hanya memberikan tautan untuk info lebih lanjut. Artinya, jika tautannya rusak atau terputus, postingan Anda menjadi tidak berguna. - person scenia; 18.06.2015

Pastikan versi Project Properties -> Project Facets -> Java disetel ke 1.7 dan bukan 1.8.

Hal ini juga dijelaskan dengan baik di bagian dokumentasi plugin 'Mengubah Tingkat Kepatuhan JDK'

person Ridcully    schedule 24.10.2015
comment
solusi singkat dan tepat. - person Prateek Joshi; 29.04.2016

Saya mengalami masalah serupa sekarang. Pengaturan saya adalah OS X + JDKs 6, 7 dan 8, dan di Eclipse.ini saya punya:

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

Tampaknya ia akan menggunakan kompiler itu tidak peduli apa yang Anda tetapkan dalam preferensi global/proyek (saya bahkan menghapus JDK 8 dari daftar JRE yang Terinstal, tidak berhasil).

Setelah saya mengubahnya untuk menggunakan JDK 7 dan menerapkan ulang aplikasi GAE saya, itu berhasil.

person Miloš Ranđelović    schedule 26.06.2014

Anda harus mengkompilasi dengan Java 1.7. Namun jika Anda memiliki file *.jsp, Anda juga harus menghapus Java 1.8 sepenuhnya dari sistem. Jika Anda menggunakan Mac, berikut cara melakukannya.

person Denis Kutlubaev    schedule 08.08.2014

Jika Anda menggunakan gradle (misalnya Android Studio) di Mac, Anda dapat mengatasi masalah ini dengan menambahkan baris berikut ke bagian atas skrip gradlew Anda:

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

Variasi metode ini dapat digunakan pada platform lain.

person Tad    schedule 07.01.2015

Saya yakin ini sudah teratasi, tapi inilah solusinya

GAE berjalan di java7 (seperti yang ditunjukkan oleh Pak Knego) jadi maven harus dikompilasi dengan java7. Lakukan hal berikut:

Saya lebih suka melakukan semua ini di terminal

Edit profil bash:

touch ~/.bash_profile; open ~/.bash_profile

Setel Direktori Beranda 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

Arahkan ke folder proyek Anda (dengan pom.xml) dan instal ulang versi maven yang bersih

mvn clean install

Navigasikan ke direktori EAR atau WAR dan terapkan dengan runtime baru

mvn appengine:update

Jika Anda menggunakan titik akhir, Anda harus memperbarui perpustakaan titik akhir Anda

person PSchuette    schedule 06.07.2015