【问题标题】:Mixing Scala and Java files in an Eclipse project在 Eclipse 项目中混合 Scala 和 Java 文件
【发布时间】:2011-05-25 20:30:20
【问题描述】:

我可能在做一些愚蠢的事情,但我无法发现它。

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

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

它们在语法上似乎都是正确的——Eclipse 编辑器至少似乎知道每个文件是什么语言,并在我制作它们时正确报告语法错误——但 Java 文件找不到在 Scala 中创建的类。 IDE 站点似乎建议这一切都应该正常工作。

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

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

【问题讨论】:

  • 以防万一,在项目属性窗口中检查构建器并确保选中了 Scala。
  • 另一个疯狂的猜测,使用不同的源文件夹。一个用于 Scala,一个用于 Java,从来没有遇到过这样的问题。
  • 谢谢。检查是否选择了 Scala 构建器并将 Java 文件移动到不同的文件夹。没有帮助:(
  • 如果您删除所有 .java 文件(或所有 .scala 文件),它是否有效?
  • 我在谷歌搜索中偶然发现了这个线程。根据我的发现。似乎问题不是来自 scala 部分。这就是我所做的。 1.build项目,2.制作java和scala文件3.添加scala性质。 4.尝试构建它(用java文件从scala文件中导入一些类)。这给了我错误,所以我尝试删除所有 scala 性质/类并将 java 文件修改为 vanilla helloworld 程序。它仍然给了我同样的错误(找不到类或排序)。

标签: eclipse scala eclipse-plugin scala-2.8


【解决方案1】:

我也在使用 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 之前,但是......我也不会打赌。 “自然”的顺序可能也很重要。

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

【讨论】:

  • 好的,试过了。 .project 是相同的,.lasspath 完全不同,所以我将 .classpath 更改为您在上面给出的那个......没有区别。我已经删除了项目,重新导入了文件等,但它不起作用:(
  • 我的错误是天性是相反的。不幸的是,改变它仍然没有做任何事情。它仍然没有建立任何类文件
  • 我想不出我在工作区范围内所做的任何事情。在 .settings 中似乎没有任何适用...哦,我在这个项目上使用 Java 1.5,如果这很重要(特别是 1.5.0_22)。 Eclipse 本身在 1.6 中运行。
  • 另外,我假设您已经知道定期执行“Project | Clean...”的技巧?我在修改配置文件时反复这样做。
  • 我在“Project | Clean...”上支持 @Rodney。
【解决方案2】:

我注意到当我创建一个新文件时,Eclipse-IDE 有时不会编译我的 Scala 文件。我必须在包资源管理器中选择项目并刷新它(F5)。此外,您可以通过以下方式更改 Eclipse 中的编译顺序(Java 优先 vs. Scala 优先):

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-02-23
  • 2013-08-31
  • 2011-12-08
  • 1970-01-01
  • 2011-01-04
  • 1970-01-01
  • 2012-11-02
  • 2014-01-01
相关资源
最近更新 更多