2012-01-27 21 views
2

Eclipse Scala插件有时会给我伪造的编译错误,说“所需的类文件缺失”。这可能与我的项目依赖于同一工作区中的其他项目有关。清理项目 - 即使清理所有打开的项目 - 也不能解决这些错误。我如何让他们离开?Eclipse Scala IDE - 缺少X所需的类文件

回答

3

这可能是由于在类路径中有两个不同版本的同一个jar(或者,我想,在classpath中只有一个旧的与二进制不兼容的jar版本)。您可以使用像JBoss Tattletale这样的类路径检查工具来检测这样的问题。

下面是分析一个项目,所有的罐子都在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 

告密将创建报告目录(最后一个参数),如果它不存在。 Maven和Ant项目也有Tattletale版本。

然后在Web浏览器中打开该文件

tattletale-1.1.2.Final/reports/$PROJECT/index.html 

,并环顾四周,尤其是在像“不同版本的消除Jar文件”和“多jar文件”页面。如果没有发现该类型的问题,那么这些页面将是空的。

+0

海事组织这是最有用的答案,至少它导致我的决心。我想你应该接受它。非常感谢。 – 2012-07-25 14:17:57

1

关闭所有打开的项目,然后打开出现这些错误的项目。这对我有用,但只在某些情况下。我很有可能需要事先清理项目。

1

斯卡拉编译器看起来canonicalise路径(或者它可能只是Play 1 Scala插件,我不知道)。因此,如果您在Linux或Mac OS X上创建了一个符号链接,从foo.jarfoo.jar.orig,Scala编译器会认为它不是.jar文件,因为它将查看规范路径。所以像这样的任何jar都会从你的类路径中悄悄丢弃。

1

您可能在classpath中不需要一些必需的符号,或者(!),在classpath中可能有多个jar版本,这是我的情况。

在将salat和casbah安装到项目中之后,我在IntelliJ中进行完全重建时遇到了类似的问题。 SBT构建进展顺利,而想法开始失败。

我已经卸下卡斯巴,因为它是由salat传递导入的,问题消失了。

希望能帮助那里的人。