我正在尝试使用kotlin.String
加载SystemClassLoader
inputClassName = String::class.qualifiedName.toString()
val input = ClassLoader.getSystemClassLoader()
.loadClass(inputClassName) // here I get error
而且我出错了。堆栈跟踪:
Exception in thread "main" java.lang.ClassNotFoundException: kotlin.String
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
at block.execution.Executor.init(Executor.kt:40)
at block.AppKt.main(App.kt:50)
我在做什么错?我该如何解决?
kotlin.String
不存在可以加载的类,编译器为mapped to java.lang.String
。 String::class.java.name
将为您提供班级的实际名称。
当然,正如Mikhail Kopylov指出的那样,用已经加载的类的名称来加载类几乎没有意义。也许可以将其加载到特定的ClassLoader
中,但是无论如何String
肯定会由系统类加载器加载。