NoClassDefFoundError: Could not initialize OauthRawGcsServiceFactory on production environment

StackOverflow https://stackoverflow.com/questions/23156767

Frage

I'm using appengine-sdk 1.9.3.

In devserver, works in Eclipse and Ant normally.

When I deploy (update) to appengine (production environment), I get this error:

event.getResults(): [<pre>Error for /p7/formPanelServlet
java.lang.NoClassDefFoundError: Could not initialize class
    com.google.appengine.tools.cloudstorage.oauth.OauthRawGcsServiceFactory 
at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createRawGcsService(GcsServiceFactory.java:42) 
at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createGcsService(GcsServiceFactory.java:34)
at com.bitvisio.p7.server.FormPanelServlet.&lt;init&gt;(FormPanelServlet.java:27)

At FormPanelServlet.java:27, the code is:

private final GcsService gcsService = GcsServiceFactory
        .createGcsService(new RetryParams.Builder()
        .initialRetryDelayMillis(10)
        .retryMaxAttempts(10)  
        .totalRetryPeriodMillis(15000)
        .build());

I put the lib appengine-gcs-client-0.3.9.jar in war/WEB-INF/lib. I think there is a problem with this lib.

Thanks for help.

War es hilfreich?

Lösung

Always use tools like Maven or Ivy to resolve dependencies for you. Copying JARs to war/WEB-INF/lib/ directory and editing .classpath file manually will be painful and may not help you always. If you use Eclipse & Google App Engine plugin, use Add Google APIs... as mentioned here - Google Plugin for Eclipse. In my case, adding Cloud Storage API via Google Plugin for Eclipse helped resolve this NoClassDefFoundError.

Andere Tipps

I had the same problem. I use Ivy to resolve dependencies and always get the latest.integration (with Maven use RELEASE) for revisions.

However I usually ignore transitive libraries. It looks like Google is expanding the API family - at least splitting out discrete functionality.

There are now quite a few transitive dependencies and it seems they released a new version of the GCS client around the same time as 1.9.3.

Getting all dependencies and packaging them in my deployment fixed my issue. I did not have the issue in development which made it more confusing.

You are facing this issue because you are not adding the some of the jar like

  • google-api-services-storage-v1-rev78-1.22.0.jar download link

  • joda-time-2.94.jar download link

  • guava-19.0.jar link to download

    you can use the different version of jar according to your appengine-gcs-client jar file.

    Note : Add all these jar and build path with the project and problem will get solve. enter image description here

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top