[英]Java reflection
我的代码给了我一个java.lang.ClassNotFoundException: a
。
如何生成该类?
我没那么做 像这样给人错误。 java.lang.ClassNotFoundException:一个如何生成该类?
String line = reader.readLine();
Class<?> writeoutClass = Class.forName(line);
您在此处输入的课程在classpath中不可用。
如果输入为String: helloasdjfhajsdklfhjh
则在类路径中应该有具有相同限定名的类。
您真的要在运行时创建一个新类吗? 如果是这样的话
对于1:例如,您可以从某个数据库或某些数据库中获取字节码(如果已存在)。 否则,您将需要创建它-通过生成Java源代码并对其进行编译(这意味着需要Java编译器),或者通过使用字节码工程库(例如ASM)来创建它。 (当然,您也可以手动执行此操作,但我不建议这样做。)
这一切都取决于您实际想要做什么。
对于2:创建ClassLoader
的子ClassLoader
并实现findClass
方法以获取字节码并为您调用defineClass
。 创建此类的对象,并将其作为参数传递给Class.forName()
方法,或简单地调用loader.loadClass(name)
。
如果您的新类使用其他任何类,则应由同一类加载器或任何祖先类加载器加载它们,否则会出现运行时错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.