2011-09-07 65 views
0

我嘗試部署我的項目時出現問題: «找到了一個太大而無法上傳的jar文件»。當腳本嘗試上傳 appengine-api-1.0-sdk-1.5.3.jar時(15.8 MB,儘管只允許10MB文件),問題就會發生。 這個問題自2009年以來就非常有名了。谷歌問題跟蹤器中也有很多門票,這裏也是如此。網絡上有很多這種類型的消息。但他們都指的是這兩個解決方案:向Google應用引擎部署項目時出錯

1)使用--enable_jar_splitting。當然,我試過使用它。沒有成功:

# appengine-java-sdk-1.5.3/bin/appcfg.sh -e [email protected] --enable_jar_splitting update project/war 
Reading application configuration data... 
...... 
java.lang.IllegalStateException: Found a jar file too large to upload:  "/tmp/appcfg4869648953084473935.tmp/WEB-INF/classes/war/WEB-INF/lib/appengine-api-1.0-sdk- 1.5.3.jar". Consider using --enable_jar_splitting. 
Unable to update app: Found a jar file too large to upload:  "/tmp/appcfg4869648953084473935.tmp/WEB-INF/classes/war/WEB-INF/lib/appengine-api-1.0-sdk- 1.5.3.jar". Consider using --enable_jar_splitting. 
Please see the logs [/tmp/appcfg5857347513630341491.log] for further information. 

我試圖使用不同版本的SDK(1.4.3,1.5.2和最新的1.5.3)。但該腳本忽略了--enable_jar_splitting選項。

2)將appengine-api-1.0-sdk-1.5.3.jar解包到WEB-INF/lib。在這種情況下出現另一個錯誤。項目受到3000個文件的限制。大約有3500個文件。在appengine-api-1.0-sdk-1.5.3.jar歸檔和我的項目中的100個文件。所以,這個解決方案並不適用。

3)我自己找到了3D解決方案。您可以從WEB-INF/lib目錄中刪除appengine-api-1.0-sdk-1.5.3.jar。它的作品,但只有在你有簡單的項目的情況下。但是,如果項目使用Google Appengine的所有功能,則它不起作用。我需要使用數據存儲和其他一些功能。如果沒有appengine-api-1.0-sdk-1.5.3.jar項目可以部署,但它不起作用,並在谷歌錯誤控制檯中產生錯誤(缺少類)。

我發送了一條消息到谷歌。不幸的是,他們保持沉默。

請幫助我,你聰明的傢伙。我會非常感激。希望有一個小竅門可以讓它工作。

+0

如果您沒有上傳jar,那麼您嘗試使用哪些類會給您帶來錯誤? –

回答

1

你可以嘗試手動分割appengine-api-1.0-sdk-1.5.3.jar。

  1. 解壓縮jar文件。
  2. 將文件的一半壓縮到一個jar文件
  3. 將另一半壓縮到一個jar文件。
  4. 更新您的班級路徑並構建工具。
+0

非常感謝你的建議。它幫助我找到解決方法:#du -sh appengine-api-1.0-sdk-1.5.3.jar 18M appengine-api-1.0-sdk-1.5.3.jar #jar -xf appengine-api- 1.0-sdk-1.5.3.jar #jar -cf appengine-api-1.0-sdk-1.5.3-repacked.jar com/javax/META-INF/org/ #du -sh appengine-api-1.0- sdk-1.5.3-repacked.jar 6.1M appengine-api-1.0-sdk-1.5.3-repacked.jar – Andreas

2

您不需要上傳API jar - 它是App Engine平臺的一部分。無論您更改的是哪種配置導致SDK嘗試上傳,都應該改回。

相關問題