2014-04-18 54 views
4

我正在使用appengine-sdk 1.9.3。NoClassDefFoundError:無法在生產環境中初始化OauthRawGcsServiceFactory

在devserver中,通常在Eclipse和Ant中工作。

當我部署(更新)到AppEngine上(生產環境),我得到這個錯誤:

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) 

在FormPanelServlet.java:27,代碼:

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

我把lib/appengine-gcs-client-0.3.9.jar在war/WEB-INF/lib中。我認爲這個庫有一個問題。

感謝您的幫助。

+0

添加哪個依賴項解決了這個問題? – Ashish

回答

2

總是使用像Maven或Ivy這樣的工具來爲您解決依賴關係。將JAR複製到war/WEB-INF/lib/目錄並手動編輯.classpath文件將是痛苦的,並且可能無法幫助您始終。如果您使用Eclipse & Google App Engine插件,請使用添加Google API ...如此處所述 - Google Plugin for Eclipse。在我的情況下,通過Google Plugin for Eclipse添加Cloud Storage API有助於解決此問題NoClassDefFoundError

1

我有同樣的問題。我使用Ivy來解決依賴關係,並且總是獲取latest.integration(使用Maven使用RELEASE)進行修訂。

但是我通常忽略傳遞庫。看起來谷歌正在擴展API系列 - 至少分離出了離散功能。

現在有不少傳遞依賴,似乎他們在1.9.3的同一時間發佈了新版本的GCS客戶端。

獲取所有依賴關係並將它們打包到我的部署中解決了我的問題。我沒有遇到這個問題,這讓問題更加混亂。

1

你正面臨這個問題,因爲你不加入一些罐子像

  • 谷歌的API服務存儲-V1-rev78-1.22.0.jar download link

  • 喬達時間 - 2.94.jar download link

  • 番石榴19.0.jar link to download

    可以使用迪菲根據你的appengine-gcs-client jar文件租用jar版本。

    注意:添加所有這些jar和構建路徑的項目和問題將得到解決。 enter image description here

相關問題