gpt4 book ai didi

java - 如何使用 java 类加载器调用带参数的 scala 函数?

转载 作者:行者123 更新时间:2023-12-02 10:58:11 28 4
gpt4 key购买 nike

我正在寻找一些指导来将 scala jar 加载到 java 类加载器中。当我使用 java jar 文件时,下面的函数适用于我。

其中,arr 是我需要加载到类加载器中的所有 jar 的 java.net.URL 数组。

val classLoader = new URLClassLoader(arr, this.getClass().getClassLoader())
val clazz = classLoader.loadClass(className)
val myMethod = clazz.getDeclaredMethod(methodName, classOf[String])
myMethod.setAccessible(true)
val response = myMethod.invoke(methodName)

但是,当我尝试使用类似的方法从 scala jar 文件调用 scala 函数时,我在这一行的 val clazz = classLoader.loadClass(className) 处收到 classNotFound 异常。

val clazz = classLoader.loadClass("com.testing.Test")

我想调用类Test的打印方法。有人可以指导一下吗?我检查了 SO 中的其他几篇文章,但它们正在处理可能不适用于我的用例的对象和特征。

Scala 类例如:

package com.testing
class Test(){
def print (a: String, b: String): String = {
return a+b
}
}

谢谢!

最佳答案

这应该与 Java 类的工作方式相同,因为类加载器不应该关心任何差异,我已经这样做了很多次。但一个可能的问题是,如果您不将依赖项包含在 arr 中;对于 Java 和 Scala 都是如此,但对于 Scala,您可能会丢失 scala-library-<version>.jar .

关于java - 如何使用 java 类加载器调用带参数的 scala 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51549680/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com