[英]ClassLoader.getSystemResourceAsStream(className) returning null when trying to load class file resource
Class clazz = ...;
InputStream is = ClassLoader.getSystemResourceAsStream(clazz.getName().replace('.', '/') + ".class");
输入流返回null。 我使用了一个简单的Java工具代理来记录类的加载过程,并且类(clazz)肯定是由ClassLoader加载的。 我也尝试过
... Thread.currentThread().getContextClassLoader().getResourceAsStream(...));
并且它也返回null。 是什么原因导致类加载器无法找到资源?
该类显然是由与您尝试查找的类不同的ClassLoader加载的。 尝试以下方法:
InputStream is = clazz.getClassLoader().getResourceAsStream(
clazz.getName().replace('.', '/') + ".class");
缺少JVM中的缺陷,我认为它不可能返回null。
您是否尝试过getClass()。getClassLoader()。getResourceAsStream()请确保将要tru的类文件加载到代码的类路径中。 还可以请您分享clazz.getName()的值吗?
编辑:
您是否正在执行以下操作?
Class clazz = Dummy.class;
InputStream is = ClassLoader.getSystemResourceAsStream(clazz.getName().replace('.', '/') + ".class");
我的意思是说您将clazz定义为ClassName .class吗? 如果没有,请尝试执行此操作,然后查看。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.