2016-03-26 14 views
0

以下

https://developers.google.com/api-client-library/java/google-api-java-client/download 

をGCS画像アップロードの手順を実行すると、URLから最新のファイルをダウンロードした後のコードです。

public class GcsExample { 

    private static GcsService gcsService = GcsServiceFactory.createGcsService(); 
// Error during initialization 

    public void doPost(String gcsFilename, byte[] data) throws IOException { 

      GcsFilename filename = new GcsFilename("niranttest2.appspot.com", gcsFilename); 
      com.google.appengine.tools.cloudstorage.GcsFileOptions.Builder fileOptionsBuilder = new GcsFileOptions.Builder(); 
      fileOptionsBuilder.mimeType("image/jpeg"); 

      GcsFileOptions fileOptions = fileOptionsBuilder.build(); 
      GcsOutputChannel outputChannel = gcsService.createOrReplace(filename, fileOptions); 

      // write file out 
      BufferedOutputStream outStream = new BufferedOutputStream(Channels.newOutputStream(outputChannel)); 

      List<byte[]> allBytes = new LinkedList<byte[]>(); 
      allBytes.add(data); 

      for (byte[] b : allBytes) { 
       outStream.write(b); 
      } 
      outStream.close(); 
      outputChannel.close(); 
     } 

    } 

このコードはローカルホストで正常に動作していますが、プロダクションではgcsServiceが初期化されていません。サーバー上の ログは以下の通りです:私は

/WEB-INF/lib/appengine-api-1.0-sdk-1.9.28.jar 
/WEB-INF/lib/appengine-api-labs.jar 
/WEB-INF/lib/appengine-endpoints-deps.jar 
/WEB-INF/lib/appengine-endpoints.jar 
/WEB-INF/lib/appengine-jsr107cache-1.9.28.jar 
/WEB-INF/lib/asm-4.0.jar 
/WEB-INF/lib/commons-logging-1.1.1.jar 
/WEB-INF/lib/datanucleus-api-jdo-3.1.3.jar 
/WEB-INF/lib/datanucleus-api-jpa-3.1.3.jar 
/WEB-INF/lib/datanucleus-appengine-2.1.2.jar 
/WEB-INF/lib/datanucleus-core-3.1.3.jar 
/WEB-INF/lib/geronimo-jpa_2.0_spec-1.0.jar 
/WEB-INF/lib/google-api-client-1.21.0.jar 
/WEB-INF/lib/google-api-client-android-1.21.0.jar 
/WEB-INF/lib/google-api-client-appengine-1.21.0.jar 
/WEB-INF/lib/google-api-client-gson-1.21.0.jar 
/WEB-INF/lib/google-api-client-jackson2-1.21.0.jar 
/WEB-INF/lib/google-api-client-java6-1.21.0.jar 
/WEB-INF/lib/google-api-client-protobuf-1.21.0.jar 
/WEB-INF/lib/google-api-client-servlet-1.21.0.jar 
/WEB-INF/lib/google-api-client-xml-1.21.0.jar 
/WEB-INF/lib/google-http-client-1.21.0.jar 
/WEB-INF/lib/google-http-client-android-1.21.0.jar 
/WEB-INF/lib/google-http-client-appengine-1.21.0.jar 
/WEB-INF/lib/google-http-client-gson-1.21.0.jar 
/WEB-INF/lib/google-http-client-jackson-1.21.0.jar 
/WEB-INF/lib/google-http-client-jackson2-1.21.0.jar 
/WEB-INF/lib/google-http-client-jdo-1.21.0.jar 
/WEB-INF/lib/google-http-client-protobuf-1.21.0.jar 
/WEB-INF/lib/google-http-client-xml-1.21.0.jar 
/WEB-INF/lib/google-oauth-client-1.21.0.jar 
/WEB-INF/lib/google-oauth-client-appengine-1.21.0.jar 
/WEB-INF/lib/google-oauth-client-java6-1.21.0.jar 
/WEB-INF/lib/google-oauth-client-jetty-1.21.0.jar 
/WEB-INF/lib/google-oauth-client-servlet-1.21.0.jar 
/WEB-INF/lib/gson-2.1.jar 
/WEB-INF/lib/guava-jdk5-17.0.jar 
/WEB-INF/lib/httpclient-4.0.1.jar 
/WEB-INF/lib/httpcore-4.0.1.jar 
/WEB-INF/lib/jackson-core-2.1.3.jar 
/WEB-INF/lib/jackson-core-asl-1.9.11.jar 
/WEB-INF/lib/jdo-api-3.0.1.jar 
/WEB-INF/lib/jdo2-api-2.3-eb.jar 
/WEB-INF/lib/jetty-6.1.26.jar 
/WEB-INF/lib/jetty-util-6.1.26.jar 
/WEB-INF/lib/jsr107cache-1.1.jar 
/WEB-INF/lib/jsr305-1.3.9.jar 
/WEB-INF/lib/jta-1.1.jar 
/WEB-INF/lib/protobuf-java-2.4.1.jar 
/WEB-INF/lib/transaction-api-1.1.jar 
/WEB-INF/lib/xpp3-1.1.4c.jar 
/WEB-INF/lib/javax.servlet-api-3.0.1.jar 
/WEB-INF/lib/commons-fileupload-1.3.1.jar 
/WEB-INF/lib/commons-io-2.4.jar 
/WEB-INF/lib/google-api-client-1.18.0-rc.jar 
/WEB-INF/lib/appengine-gcs-client-0.5.jar/ 

を使用しているライブラリは、私はそれがエラーが原因のappengine-GCS-クライアント-0.5.jarというファイルであるが、私は既に持っている

以下
java.lang.NoClassDefFoundError: com/google/api/services/storage/Storage$Builder 
    at com.google.appengine.tools.cloudstorage.oauth.OauthRawGcsService.<init>(OauthRawGcsService.java:171) 
    at com.google.appengine.tools.cloudstorage.oauth.OauthRawGcsServiceFactory.createOauthRawGcsService(OauthRawGcsServiceFactory.java:41) 
    at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createRawGcsService(GcsServiceFactory.java:59) 
    at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createGcsService(GcsServiceFactory.java:44) 
    at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createGcsService(GcsServiceFactory.java:40) 
    at com.google.appengine.tools.cloudstorage.GcsServiceFactory.createGcsService(GcsServiceFactory.java:75) 
    at com.sparks.nirant.serviceImpl.GcsExample.<clinit>(GcsExample.java:30) 

と信じていますappengine-gcs-client-0.3.jarを使用して試しましたが、同じエラーが返されています。

答えて

2

生のストレージクライアント(GcsServiceFactory.createRawGcsServiceのように)を使用しているようですが、App Engine以外で使用しているためです。とにかくそれはとにかく必要です。このクラスは、google-api-services-storage LIBから来ている、あなたは依存関係以下を追加する必要があり

<dependency> 
    <groupId>com.google.apis</groupId> 
    <artifactId>google-api-services-storage</artifactId> 
    <version>v1-rev66-1.21.0</version> 
</dependency> 
+0

は、jarファイルの上に追加した後、私はエラー java.lang.NoClassDefFoundErrorの下になった、そんなにイゴールありがとう:COM /グーグル/ appengine/reackaged/org/joda/time/DateTimeZone これはライブラリを介して解決され、最終的には機能しました。 1000XThanks :) –

関連する問題