Загрузка класса через Jars в Scala - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь загрузить класс из целевого 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)

Класс, который находится внутри кувшина, следующий:

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)

Есть идеи?

enter image description here Отредактировано: добавлен путь к банке

Ответы [ 2 ]

2 голосов
/ 30 мая 2019

Согласно вашему скриншоту, ваш JAR-файл недействителен, он содержит .scala файл.Фактический файл JAR должен содержать .class файл.

0 голосов
/ 30 мая 2019

Вам также необходимо указать название пакета

 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)

Спасибо,
Вималеш

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...