gwt-dev.jar太大了,无法上传到appengine。 我可以拆分一个jar文件,或者……什么?

我最近不得不将gwt-dev.jar添加到我的/ war / WEB-INF / lib目录中,现在当我尝试部署到appengine时,我得到:

java.lang.IllegalStateException:发现一个太大而无法上传的jar文件:“C:\ DOCUME~1 \ ADMINI~1 \ LOCALS~1 \ Temp \ appcfg997121487626565419.tmp \ WEB-INF \ lib \ gwt-dev.jar”。 考虑使用–enable_jar_splitting。

我正在使用谷歌eclipse插件,根据这个问题报告,我不能使用–enable_jar_splitting。 确认!

我能以某种方式手动拆分jar文件吗? 我只需要一小部分东西。 如果没有,我该怎么办?

提取jar子。 您将获得类似于java包层次结构的文件夹结构(例如com / google / gwt / core)。 将整个解压缩的目录结构复制到war / WEB-INF / lib中。 解决了。

在linux上,您可以使用jar -xvf gwt-dev.jar提取jar。 在Windows上,只需将其重命名为zip并且您可以像普通的zip文件一样将其解压缩(jar文件实际上是伪装的zip文件)

任何大于1MB的单个文件都不会上传到App Engine。

您可以使用Windows命令行:

 \path\to\appcfg.cmd --enable_jar_splitting update path\to\war 

了解如何在此处创建部署快捷方式。

gwt-user不应该在生成的jar中,因为它provided了依赖范围。 或者至少它应该是。 GWT团队成员David Chandler的指示建议使用maven-clean-plugin从生成的WAR文件中删除jar。

@Robert是对的,你应该在上传前删除gwt-user.jar 。 如果你真的有一个大jar子,请使用@systempuntoout建议的–enable_jar_splitting。 如果你正在使用Maven,那么通过splitJars参数可以使用maven-gae-plugin等效的--enable_jar_splitting

我得到了同样的错误(具有讽刺意味的是,出于同样的原因,gwt-dev.jar添加到WEB-INF / lib以安抚依赖项)。 最后,我能够通过放弃gwt-dev.jar并将xalan.jar添加到WEB-INF / lib来启动应用程序并上传到app引擎。

我认为Peter Knego是对的,最好不要上传gwt-dev.jar