Eclipse Scala插件有时会给我伪造编译错误,说“某些类所需的类文件丢失”。这可能与我的项目依赖于同一工作区中的其他项目有关。清理项目 - 甚至清除所有打开的项目 - 不能解决这些错误。我怎么能让它们消失呢?
答案 0 :(得分:3)
这可能是由于在类路径中有两个不同版本的同一个jar(或者,我想,在类路径中只有一个旧的二进制不兼容的jar版本)。您可以使用像JBoss Tattletale这样的类路径检查工具来检测这样的问题。
以下是Tattletale命令行示例,用于分析所有jar位于lib
子目录中的项目:
java -Xmx512m -jar $HOME/opened/tattletale-1.1.2.Final/tattletale.jar $HOME/$PROJECT/lib $HOME/opened/tattletale-1.1.2.Final/reports/$PROJECT
Tattletale将创建报告目录(最后一个参数)(如果它尚不存在)。还有Matle和Ant项目的Tattletale版本。
然后打开文件
tattletale-1.1.2.Final/reports/$PROJECT/index.html
在您的网络浏览器中,环顾四周,特别是在“消除不同版本的Jar文件”和“多个jar文件”等页面。如果没有找到该类型的问题,那些页面将为空。
答案 1 :(得分:1)
关闭所有打开的项目,然后打开出现这些错误的项目。这对我有用,但仅限于某些情况。我可能也需要事先清理过的项目。
答案 2 :(得分:1)
Scala编译器似乎规范化路径(或者它可能只是Play 1 Scala插件,我不确定)。因此,如果您在Linux或Mac OS X上创建了一个符号链接,从foo.jar
到foo.jar.orig
,Scala编译器会认为它不是.jar
文件,因为它会看看规范的道路。所以这样的任何jar都会从你的类路径中默默地删除。
答案 3 :(得分:1)
你可能在类路径中没有一些必需的符号,或者,(!),你可能在类路径中有多个版本的jar,这是我的情况。
在将salat和casbah安装到项目中后,我在IntelliJ中进行完全重建时遇到了类似的问题。 SBT构建没问题,但想法开始失败。
我已经下了casbah,因为它是由salat传递进口的,问题就消失了。
希望帮助那里的人。