【问题标题】:How to execute scala code using java如何使用java执行scala代码
【发布时间】:2017-05-10 05:50:25
【问题描述】:

我是scala 的新手。我需要使用 java 执行 scala 类。

我的确切要求是:我需要将整个 scala 类(文件)作为参数传递给 java jarjar 应该读取 scala 代码并执行它。我搜索了很多网站,但没有找到合适的答案。有没有办法做同样的事情?

在此先感谢您。

【问题讨论】:

  • 呃,但是……为什么?
  • 实际上我们正在开发一个应用程序。我们得到了这个要求。
  • 我会说进一步解释一下,这是家庭作业吗?这将为您完成什么?您是否正在尝试做某种形式的插件/可扩展性?将 scala 读入相同的环境并将 scala(来自 java)执行到它自己的进程中也是两个完全不同的世界。

标签: java scala


【解决方案1】:

除了你这样做的动机之外,这肯定是可能的(我使用我的 IDE - sbt 项目做到了) 我刚刚制作了如下的scala类:

import com.google.common.base.Objects

class Car(_color: String, _valid: Boolean) {
  val color: String = _color
  val valid: Boolean = _valid

  override def toString = Objects.toStringHelper(this).add("color",color).add("valid", valid).toString
}

之后我用main 方法做了一个类来测试它。

public class Test {
     public static void main(String[] args) {
        Car test = new Car("test", true);
        System.out.println("test = " + test);
    }
}

编译没有任何问题,结果如下:

test = Car{color=test, valid=true}

【讨论】:

    【解决方案2】:

    Scala 有自己的编译器scalac,而java 使用javac。由于scalac 编译为java 可以读取的类文件并假设您只在类中使用java 库,那么您可以在java 中加载该类。所以你需要调用 scalac 编译 scala 文件,然后使用 ClassLoader 加载生成的类文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2019-12-26
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多