相关疑难解决方法(0)

Scala - 动态对象/类加载

在Java中,我通过这种方式加载外部类(在.jar文件中):

ClassLoader classLoader = new URLClassLoader(new URL[] {
  new File("module.jar").toURI().toURL()});
Class clazz = classLoader.loadClass("my.class.name");
Object instance = clazz.newInstance();

//check and cast to an interface, then use it
if (instance instanceof MyInterface)
  ...
Run Code Online (Sandbox Code Playgroud)

它工作正常.

====================

现在我想在Scala中做同样的事情.我有一个trait名字Module(Module.scala):

trait Module {
  def name: String
}

object Module {
  lazy val ModuleClassName = "my.module.ExModule"
}
Run Code Online (Sandbox Code Playgroud)

我编写了一个扩展模块Module,然后将其编译为module.jar:

package my.module

import Module

object ExModule extends Module {}
Run Code Online (Sandbox Code Playgroud)

然后我用这段代码加载它:

var classLoader = new URLClassLoader(Array[URL](
  new File("module.jar").toURI.toURL))
var …
Run Code Online (Sandbox Code Playgroud)

load scala dynamic object

19
推荐指数
1
解决办法
2万
查看次数

标签 统计

dynamic ×1

load ×1

object ×1

scala ×1