我需要在运行时从 jar 文件中加载一些类,但是每次尝试时,我都会收到 ClassNotFoundException。我使用 jar 命令创建了 jar 文件。此外,person 类是从协议缓冲区消息生成的。
协议缓冲区 msg 的内容:
package testing;
option java_outer_classname = "AddressBookProtos";
option java_package = "com.sample";
message AddressBook {
repeated Persons person = 1;
}
message Persons {
required string name =1;
}
斯卡拉文件:
object loaderTest extends App {
val classLoader = new URLCLassLoader(Array(new File("C:\\TEMP\\address.jar").toURI.toURL), this.getClass().getClassLoader())
val personClass = classLoader.loadClass("com.sample.AddressBookProtos$Persons")
}
线程“main”中的异常 java.lang.ClassNotFoundException: com.sample.AddressBookProtos$Persons at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java. net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247) 在 com.ms.qaTools.protobuf .specs.loaderTest$delayedInit$body.apply(loaderTest.scala:34) at scala.Function0$class.apply$mcV$sp(Function0.scala:34) at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0 .scala:12) 在 scala.App$$anonfun$main$1.apply(App.scala:60) 在 scala.App$$anonfun$main$1.apply(App.scala:60) 在 scala.collection.LinearSeqOptimized$ class.foreach(LinearSeqOptimized.scala:59) 在 scala.collection.immutable.List.foreach(List.scala:76) 在 scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:30) 在 scala.App$class.main(App.scala :60) 在 com.ms.qaTools.protobuf.specs.loaderTest$.main(loaderTest.scala:10) 在 com.ms.qaTools.protobuf.specs.loaderTest.main(loaderTest.scala)