[appengine-java] Newbie: java.lang.ClassNotFoundException
Hello, all! A friend and I are dabbling in App Engine using the Java SDK. We've put together a Hello, World example with no problems; however, when we try to add code to make a simple call to a webservice using the classes in com.google.api.client.http, our code compiles fine but causes a runtime error: HTTP ERROR 500 Problem accessing /surreality. Reason: com/google/api/client/http/HttpTransport Caused by: HTTP ERROR 500 Problem accessing /surreality. Reason: com/google/api/client/http/javanet/NetHttpTransport Caused by: java.lang.NoClassDefFoundError: com/google/api/client/http/javanet/ NetHttpTransport at com.surreality.scratch.SurrealityServlet.performSearch(SurrealityServlet.java: 31) at com.surreality.scratch.SurrealityServlet.doGet(SurrealityServlet.java: 18) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 511) (...cut) The code in question is: package com.surreality.scratch; import java.io.IOException; import javax.servlet.http.*; import java.util.List; import com.google.api.client.googleapis.*; import com.google.api.client.http.*; import com.google.api.client.http.javanet.*; import com.google.api.client.util.Key; @SuppressWarnings(serial) public class SurrealityServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType(text/plain); try { this.performSearch(resp); resp.getWriter().println(Here...); } catch (Exception e) { resp.getWriter().println(Onoes!); } } public void performSearch(HttpServletResponse resp) throws Exception { try { resp.getWriter().println(Perform Search ); resp.getWriter().println(---); HttpTransport transport = new NetHttpTransport(); // This line causes our servlet to implode on every request } catch (Exception e) { resp.getWriter().println(failed); throw e; } } } Our best guess was a discrepancy between the build classpath and the runtime classpath, but our runtime classpath *seems* to be OK. The HttpTransport class is in the google-api-client-1.4.1-beta.jar library, and that's included in the command line Eclipse is generating to run the project: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/ java -Ddatastore.default_high_rep_job_policy_unapplied_job_pct=50 - Xmx512m -javaagent:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/agent/appengine-agent.jar - XstartOnFirstThread -Xbootclasspath/p:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/override/appengine-dev-jdk-overrides.jar - Dfile.encoding=MacRoman -classpath /Users/Arkaaito/Documents/AppEngine/ scratch/surreality/war/WEB-INF/classes:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/appengine-local-runtime- shared.jar:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/el-api.jar:/Applications/eclipse/ plugins/com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/jsp/repackaged-appengine- ant-1.7.1.jar:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/jsp/repackaged-appengine-ant- launcher-1.7.1.jar:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/jsp/repackaged-appengine- jasper-6.0.29.jar:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/jsp/repackaged-appengine-jasper- el-6.0.29.jar:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/jsp/repackaged-appengine-tomcat- juli-6.0.29.jar:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/jsp-api.jar:/Applications/eclipse/ plugins/com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/servlet-api.jar:/Applications/ eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/user/appengine-api-1.0-sdk-1.5.3.jar:/ Applications/eclipse/plugins/
Re: [appengine-java] Newbie: java.lang.ClassNotFoundException
Hi Did you try using URLFetch ? Check this post from Ikai http://ikaisays.com/2010/06/29/using-asynchronous-urlfetch-on-java-app-engine/ Regards, On Sun, Sep 18, 2011 at 7:46 PM, Arkaaito alsti...@gmail.com wrote: Hello, all! A friend and I are dabbling in App Engine using the Java SDK. We've put together a Hello, World example with no problems; however, when we try to add code to make a simple call to a webservice using the classes in com.google.api.client.http, our code compiles fine but causes a runtime error: HTTP ERROR 500 Problem accessing /surreality. Reason: com/google/api/client/http/HttpTransport Caused by: HTTP ERROR 500 Problem accessing /surreality. Reason: com/google/api/client/http/javanet/NetHttpTransport Caused by: java.lang.NoClassDefFoundError: com/google/api/client/http/javanet/ NetHttpTransport at com.surreality.scratch.SurrealityServlet.performSearch(SurrealityServlet.java: 31) at com.surreality.scratch.SurrealityServlet.doGet(SurrealityServlet.java: 18) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 511) (...cut) The code in question is: package com.surreality.scratch; import java.io.IOException; import javax.servlet.http.*; import java.util.List; import com.google.api.client.googleapis.*; import com.google.api.client.http.*; import com.google.api.client.http.javanet.*; import com.google.api.client.util.Key; @SuppressWarnings(serial) public class SurrealityServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType(text/plain); try { this.performSearch(resp); resp.getWriter().println(Here...); } catch (Exception e) { resp.getWriter().println(Onoes!); } } public void performSearch(HttpServletResponse resp) throws Exception { try { resp.getWriter().println(Perform Search ); resp.getWriter().println(---); HttpTransport transport = new NetHttpTransport(); // This line causes our servlet to implode on every request } catch (Exception e) { resp.getWriter().println(failed); throw e; } } } Our best guess was a discrepancy between the build classpath and the runtime classpath, but our runtime classpath *seems* to be OK. The HttpTransport class is in the google-api-client-1.4.1-beta.jar library, and that's included in the command line Eclipse is generating to run the project: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/ java -Ddatastore.default_high_rep_job_policy_unapplied_job_pct=50 - Xmx512m -javaagent:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/agent/appengine-agent.jar - XstartOnFirstThread -Xbootclasspath/p:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/override/appengine-dev-jdk-overrides.jar - Dfile.encoding=MacRoman -classpath /Users/Arkaaito/Documents/AppEngine/ scratch/surreality/war/WEB-INF/classes:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/appengine-local-runtime- shared.jar:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/el-api.jar:/Applications/eclipse/ plugins/com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/jsp/repackaged-appengine- ant-1.7.1.jar:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/jsp/repackaged-appengine-ant- launcher-1.7.1.jar:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/jsp/repackaged-appengine- jasper-6.0.29.jar:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/jsp/repackaged-appengine-jasper- el-6.0.29.jar:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/jsp/repackaged-appengine-tomcat- juli-6.0.29.jar:/Applications/eclipse/plugins/ com.google.appengine.eclipse.sdkbundle_1.5.3.r37v201108301710/ appengine-java-sdk-1.5.3/lib/shared/jsp-api.jar:/Applications/eclipse/