当我尝试运行部署到应用引擎的项目时出现错误。我看到以下问题:
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$apply$41$$anonfun$apply$42$$anonfun$apply$45$$anonfun$apply$47$$anonfun$apply$48$$anonfun$apply$49.class
但在我看来,它仍然是一个有效的文件名。