2

当我尝试运行部署到应用引擎的项目时出现错误。我看到以下问题:

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

但在我看来,它仍然是一个有效的文件名。

4

1 回答 1

0

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

当前存在一个关于项目文件名中的“特殊”字符的未解决问题。

问题 2211:项目中的文件名不支持特殊字符

最初的问题是由 Python App Engine 用户报告的,但是如果您查看评论,您会发现它显然也会影响 Java 用户。

于 2013-07-31T12:59:24.880 回答