繁体   English   中英

如何将Scala类导入IntelliJ IDEA

[英]How to import scala class into IntelliJ IDEA

我知道这听起来并不明智,但是我对此并不陌生,我真的很想弄清楚。 我最近一直在用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>

我们非常感谢您对其他有用链接的帮助或指导。 谢谢。

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

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

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

但是,如果您使用sbt和基于sbt的IntelliJ项目 ,则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();
    }
}

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

片段:在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代码吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM