如何将scala类导入IntelliJ IDEA

时间:2016-06-01 15:41:14

标签: java scala intellij-idea intellij-scala

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

Interop Between Java and 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>

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

2 个答案:

答案 0 :(得分:1)

  
      
  • 是否有引入scala类并在我的Java代码中使用它们?
  •   
  • 是否可以在Java中使用scala类,或者根本没有办法呢?
  •   

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

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

但是如果使用sbt和sbt-based IntelliJ project,则IntelliJ将使用sbt构建服务器构建整个项目,该服务器能够编译Java和Scala源。

您将拥有如下目录结构:

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();
    }
}

答案 1 :(得分:0)

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

Snippet: Mixing Scala, Java in a Maven Project

您需要在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)在同一个项目中,您可以轻松地相互访问它们。更多细节可以在这里找到:

Can we write Scala code inside a Java program?