繁体   English   中英

尝试加载类文件资源时,ClassLoader.getSystemResourceAsStream(className)返回null

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM