谷歌应用引擎中的.class文件名长度是否有限制,在jar文件之外?

时间:2013-07-21 05:15:04

标签: google-app-engine

当我尝试运行部署到应用引擎的项目时,我遇到了错误。我看到的问题如下:

java.lang.ClassNotFoundException: com.seattleglassware.AuthServletSupport$$anonfun$finishOAuth2Dance$1$$anonfun$apply$33$$anonfun$apply$34$$anonfun$apply$37$$anonfun$apply$40$$anonfun$apply$41$$anonfun$apply$42$$anonfun$apply$45$$anonfun$apply$47$$anonfun$apply$48$$anonfun$apply$49

类名看起来很合理(好吧,对于某些合理的值 - 这是由Scala编译器生成的代码)。我在我的本地web / WEB-INF / classes / com目录中看到了这个文件,我可以用javap对它进行反编译(所以我认为它没有损坏或类似的东西。)在本地调试服务器上运行良好。

更奇怪的是,我可以将web / WEB-INF / classes中的所有.class文件倒入这样的jar文件中:

cd to the web/WEB-INF/classes directory
jar cf ../lib/classes.jar .

现在,如果我上传项目(在Eclipse中按下部署按钮),我看不到那些ClassNotFoundException错误。删除jar文件,重新上传项目,再次获取错误。

我想知道是否对.class文件的名称有某种限制?或者在部署过程中发生了导致这种情况发生的其他事情?

编辑:从命令行运行使这更加清晰(现在使用maven):

  

严重:文件名中的字符无效:WEB-INF / classes / com / seattleglassware / AuthServletSupport $$ anonfun $ finishOAuth2Dance $ 1 $$ anonfun $ apply $ 33 $$ anonfun $ apply $ 34 $$ anonfun $ apply $ 37 $$ anonfun $ apply $ 40 $$ anonfun $ $申请41 $$ anonfun $ $申请42 $$ anonfun $ $申请45 $$ anonfun $ $申请47 $$ anonfun $ $申请48 $$ anonfun $ $申请49.class

但我仍然认为这是一个有效的文件名。

1 个答案:

答案 0 :(得分:0)

在文件名中包含“特殊”字符可能是此处的问题。

目前有一个关于项目文件名中“特殊”字符的公开问题。

Issue 2211: Special characters are not supported in the filenames in the project

Python App Engine用户报告了原始问题,但是如果你查看评论,你会发现它显然也会影响Java用户。