0

我知道这听起来可能并不聪明,但我对此并不陌生,我真的很想弄清楚。我最近一直在用 JAVA 编码,另一方面,在 scala 中实现了一些功能。我偶然发现了这篇文章:

Java 和 Scala 之间的互操作

这表示可以混合使用 JAVA 和 scala。由于我在 IntelliJ IDEA 中编码,我想知道是否有任何方法可以引入 scala 类并在我的 JAVA 代码中使用它们?

我已经包含了 scala-library.jar 使用:

<dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>2.10.3</version>
</dependency>

非常感谢对其他有用链接的任何帮助或指导。谢谢。

4

2 回答 2

1
  • 如果无论如何要引入 scala 类并在我的 Java 代码中使用它们?
  • 是否可以在 Java 中使用 scala 类,或者根本没有办法?

是的,是的。有两种情况:首先你有一个现有的 Scala 库,然后你可以在现有的 Maven 构建中使用它,就像你在标准 Scala 库中展示的那样。其次(我假设这是您的实际问题?)您有一个包含 Java 和 Scala源代码的项目。在这种情况下,您需要编译这两种类型的源文件。

在 IntelliJ 中,这需要您以某种方式将 Scala 外观添加到您的项目中。不幸的是,我不是 Maven 专家,所以我无法告诉您如何使用 Maven 构建。

但是,如果您使用 sbt 和基于sbt 的 IntelliJ 项目,那么 IntelliJ 将使用能够编译 Java 和 Scala 源代码的 sbt 构建服务器构建整个项目。

你会有这样的目录结构:

project
  build.properties
build.sbt
src
  main
    scala
      foo
        Foo.scala
    java
      foo
        Bar.java

例如build.properties

sbt.version=0.13.11

作为build.sbt

scalaVersion := "2.11.8"

作为Foo.scala

package foo

class Foo {
  def test(): Unit = println("Hello from Scala!")
}

并且作为Bar.java

package foo;

public class Bar {
    public static void main(String[] args) {
        final Foo f = new Foo();
        f.test();
    }
}
于 2016-06-01T18:26:22.727 回答
0

要完成用户 0__ 的帖子,如果您使用的是 Maven 构建,请基于以下链接:

片段:在 Maven 项目中混合使用 Scala、Java

您需要对 pom.xml 文件进行一些更改。在依赖项下添加:

<dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>2.10.3</version>
</dependency>

此外,在插件下,您需要添加以下内容:

<plugin>
    <groupId>org.scala-tools</groupId>
    <artifactId>maven-scala-plugin</artifactId>
    <version>2.9.1</version>
</plugin>

最后,在存储库下:

<repository>
     <id>scala-tools.org</id>
     <name>Scala-tools Maven2 Repository</name>
     <url>http://scala-tools.org/repo-releases</url>
</repository>

现在,如果您只添加一个包含 scala 类的新 .scala 文件,IntelliJ IDEA 将检测到它是 scala 并为其添加其他必要的插件和 JDK。如果这两个文件(.java 和 .scala)在同一个项目中,您可以轻松地相互访问它们。更多细节可以在这里找到:

我们可以在 Java 程序中编写 Scala 代码吗?

于 2016-06-01T20:27:27.010 回答