Class clazz = ...;
InputStream is = ClassLoader.getSystemResourceAsStream(clazz.getName().replace('.', '/') + ".class");
输入流返回null。我已经使用了一个简单的java检测代理来记录加载的类,并且类(clazz)肯定是由ClassLoader加载的。我也试过了
... Thread.currentThread().getContextClassLoader().getResourceAsStream(...));
并且它也返回null。什么可能导致类加载器无法找到资源?
答案 0 :(得分:2)
Class显然已经被一个不同的ClassLoader加载,而不是你试图找到它。试试这个:
InputStream is = clazz.getClassLoader().getResourceAsStream(
clazz.getName().replace('.', '/') + ".class");
缺少JVM中的缺陷,我认为不可能返回null。
答案 1 :(得分:1)
你试过getClass()。getClassLoader()。getResourceAsStream() 请确保您在类代码的类路径中加载的类文件。 请同意请分享clazz.getName()的价值?
编辑:
你在做类似的事吗?
Class clazz = Dummy.class;
InputStream is = ClassLoader.getSystemResourceAsStream(clazz.getName().replace('.', '/') + ".class");
我的意思是说你将clazz定义为 ClassName .class?如果没有,那么尝试这样做,然后看看。