在Eclipse项目中混合使用Scala和Java文件

时间:2010-12-15 11:05:41

标签: eclipse scala eclipse-plugin scala-2.8

我可能做了些蠢事,但我无法发现它。

我已经安装了Eclipse Helios(Helios,因为我无法使用Gallileo使Glassfish支持正常工作)以及Helios的Scala Eclipse插件的每晚构建

我创建了一个Scala项目并添加了一些文件 - Java和Scala的混合。

它们看起来在语法上都是正确的 - Eclipse编辑器至少似乎知道每个文件是什么语言,并且在我创建时正确报告语法错误 - 但是Java文件找不到在Scala中创建的类。 IDE网站似乎建议这一切都应该可行。

任何Scala文件的bin目录中都没有类文件(Java文件定义的每个类都有类文件),因此似乎由于某种原因没有构建Scala文件。这些缺少的类文件将解释为什么Java文件看不到类。

我错过了什么?我如何告诉Eclipse构建这些文件?

2 个答案:

答案 0 :(得分:8)

我也在使用Helios(因为我已经64位了)并且发现插件有时表现得有些奇怪(尽管说实话并没有太多不同于Galileo)。当你发现混合Java和Scala时,它看起来似乎没有问题,但是没有编译代码。或者更糟糕的是,依赖于Scala类的Java类无法编译,因为Scala类没有编译 - 但是直到所有错误都从项目中消失才会编译,这当然不会发生,直到它编译......呃。

我开始修改类路径和项目文件,并最终使它工作,但我不能真正说出原因。我发誓我更改了一个文件,然后将其更改回来,然后就可以了?

无论如何,这是我的文件:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>xxxxxxxxxxxxx</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
    <buildCommand>
        <name>org.scala-ide.sdt.core.scalabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
</buildSpec>
<natures>
    <nature>org.eclipse.jdt.core.javanature</nature>
    <nature>org.scala-ide.sdt.core.scalanature</nature>
</natures>
</projectDescription>

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.scala-ide.sdt.launching.SCALA_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="output" path="bin"/>
</classpath>

关键的事情似乎是SCALA_CONTAINER来到JRE_CONTAINER之前,但是......我也不会赌它。 “性质”的顺序也很重要。

现在已经为我工作了一两个星期,每天更新,所以... *手指交叉*

答案 1 :(得分:7)

我注意到Eclipse-IDE在创建新文件时有时无法编译我的Scala文件。我必须在Package Explorer中选择项目并刷新它(F5)。此外,您可以通过转到:

更改Eclipse中的编译顺序(Java first vs. Scala first)

Window-&gt; Preferences-&gt; Scala-&gt; Compiler-&gt; Build Manager-&gt; compileorder