i3wangyi
i3wangyi

Reputation: 2409

GAE 500 server error

I'm developing app on GAE, I test the website locally fine however, every time I tried to deploy it to the GAE it reports with Error: Server Error

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

I searched a lot in google, seems no answer could solve my question. When I look for the log in the GAE app, following is the major problem I found so far. Initially, I thought it's due to JDK8 but when I set JDK8 I can't even run the app locally!

    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)

Upvotes: 14

Views: 8327

Answers (8)

Ridcully
Ridcully

Reputation: 23655

Make sure, that the version of Project Properties -> Project Facets -> Java is set to 1.7 and not to 1.8.

This is also nicely explained in the plugin's documentation section 'Changing the JDK Compliance Level'

Upvotes: 4

PSchuette
PSchuette

Reputation: 4473

I'm sure this has been resolved, but here is the solution

GAE runs on java7 (as indicated by Mr. Knego) so maven must be compiling with java7. Do the following:

I prefer to do all this in the terminal

Edit bash profile:

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

Navigate to your project folder (with pom.xml) and reinstall a clean version of maven

mvn clean install

Navigate to EAR or WAR directory and deploy with a new runtime

mvn appengine:update

If you are using endpoints, you should update your endpoint libraries

Upvotes: 0

craigrs84
craigrs84

Reputation: 3064

I had the same problem on Windows when Java 8 was installed.

I tried modifying the project/workspace settings but it didn't help me.

So, I created the following batch file as a workaround for GAE projects:

eclipse_gae.bat:

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

Upvotes: 8

Tad
Tad

Reputation: 4784

If you are using gradle (e.g. Android Studio) on a mac, you can work around this problem by adding the following lines to the top of your gradlew script:

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

Variations of this method should work on other platforms.

Upvotes: 2

icordoba
icordoba

Reputation: 1899

there is no need to fully remove Java 8 from MacOS. Just reconfigure Eclipse as shown here to force it to compile JSPs as 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

Upvotes: 5

Denis Kutlubaev
Denis Kutlubaev

Reputation: 16124

You have to compile with Java 1.7. But if you have *.jsp files, you should also completely remove Java 1.8 from the system. If you use Mac, here is how you can do it.

Upvotes: 2

Miloš Ranđelović
Miloš Ranđelović

Reputation: 444

I ran into a similar issue now. My setup is OS X + JDKs 6, 7 and 8, and in my eclipse.ini I had:

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

Apparently it will use that compiler no matter what you set in global/project preferences (I even removed JDK 8 from the Installed JRE list, no success).

Once I've changed that to use JDK 7 and redeployed my GAE app, it worked.

Upvotes: 3

Peter Knego
Peter Knego

Reputation: 80340

This is the telltale: Unsupported major.minor version 52.0. This happens when you compile on higher version JDK (52 = java8) and then execute it on lower JRE version (GAE uses java7).

GAE does not yet support Java8, so you should compile under Java7.

Upvotes: 17

Related Questions