在scala中通过JAR加载类

在scala中通过JAR加载类,scala,urlclassloader,dynamic-class-loaders,Scala,Urlclassloader,Dynamic Class Loaders,我正在尝试从目标Jar加载一个类,我看到了一些示例并尝试复制,但不幸的是我不能 我在这里做错了什么: import java.io.File import java.net.{URL, URLClassLoader} val jarPathName = "C:\\Users\\Pedro Luis\\IdeaProjects\\Metamorphosis\\test\\typeLoader\\testJars\\DummySimpleClass3.jar" val classLoad

我正在尝试从目标Jar加载一个类,我看到了一些示例并尝试复制,但不幸的是我不能

我在这里做错了什么:

import java.io.File
import java.net.{URL, URLClassLoader}

  val jarPathName = "C:\\Users\\Pedro Luis\\IdeaProjects\\Metamorphosis\\test\\typeLoader\\testJars\\DummySimpleClass3.jar"

  val classLoader = new URLClassLoader(Array[URL](new File(jarPathName).toURI.toURL))
  val classToLoad = classLoader.loadClass("DummySimpleClass.scala")
  val method = classToLoad.getDeclaredMethod("printer")
  val instance = classToLoad.newInstance()

  method.invoke(instance)
jar内部的类如下所示:

package typeLoader.testJars

class DummySimpleClass {

  def printer(): Unit = println("Hello World!")

}
我得到的错误是:

java.lang.ClassNotFoundException: scala.typeLoader.testJars.DummySimpleClass.scala
  at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  at efeawfew.JavaTest$.<init>(JavaTest.scala:13)
java.lang.ClassNotFoundException:scala.typeLoader.testJars.DummySimpleClass.scala
位于java.net.URLClassLoader.findClass(URLClassLoader.java:382)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
位于efeawfew.JavaTest$(JavaTest.scala:13)
有什么想法吗


编辑:添加了jar路径

您还需要提到包名

 import java.io.File
import java.net.{URL, URLClassLoader}

  val jarPathName = "C:\\Users\\Pedro Luis\\IdeaProjects\\Metamorphosis\\test\\typeLoader\\testJars\\DummySimpleClass3.jar"

  val classLoader = new URLClassLoader(Array[URL](new File(jarPathName).toURI.toURL))
  val classToLoad = classLoader.loadClass("typeLoader.testJars.DummySimpleClass.scala")
  val method = classToLoad.getDeclaredMethod("printer")
  val instance = classToLoad.newInstance()

  method.invoke(instance)

根据您的屏幕截图,您的JAR文件无效,它包含
.scala
文件。实际的JAR文件必须包含
.class
文件。

@PedroCorreiaLuís检查路径
…DummySimpleClass3.JAR
,并且它是一个有效的JAR(不确定Windows中路径中的空格)。类名应该没有
scala
classLoader.loadClass(“typeLoader.testJars.DummySimpleClass”)
@dmytromiti在jar中是有效的,并且存在,并且具有该名称的类也不工作,还有其他想法吗?:)jar文件需要在与包层次结构匹配的目录结构中包含已编译的类。在您的图像中,jar中只有源文件。似乎我无法像这样加载Scala类,只能使用您提到的.class,ty