簡體   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