2011-09-07 63 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尝试上传,都应该改回。