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

The*_*aul 18 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构建这些文件?

Rod*_*zel 8

我还使用太阳神(因为我已经走了64位),并发现该插件有时表现得有点古怪(不过说实话比伽利略没有太大的区别).当你发现混合使用Java和Scala时,它看起来似乎没有问题,但是没有编译代码.或者更糟的是一个Java类依赖于Scala的类将无法编译,因为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>
Run Code Online (Sandbox Code Playgroud)

<?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>
Run Code Online (Sandbox Code Playgroud)

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

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

  • 另外,我假设你已经知道了经常做"Project | Clean ..."的诀窍吗?我在修改配置文件时反复做了. (2认同)

ste*_*son 7

我注意到Eclipse-IDE有时在创建新文件时不会编译我的Scala文件.我必须在Package Explorer中选择项目并刷新它(F5).此外,您可以通过转到以下内容来更改Eclipse中的编译顺序(Java first vs. Scala first)

Window-> Preferences-> Scala-> Compiler-> Build Manager-> compileorder