使用前导斜杠从ClassLoader获取资源

时间:2016-04-26 10:35:28

标签: resources classloader

我正试图通过反射访问第三方jar的外部方法。

1)我通过系统类加载器的“addUrl”方法将外部jar添加到类路径

2)我检索类类型,方法,然后我调用方法,它全部工作

我反编译外部jar的一部分:

<script>
    data = JSON.parse(<?PHP echo json_encode($array); ?>);
</script>

<script>
    alert(data); //for testing purposes
    var account_id = data['entry_date'];
    alert(account_id);
</script>

使用第三方组件此调用有效,因为它正确读取“props”文件。 但在我的代码中它返回null,intead: “/ COM /示例/道具” 我试过了: “COM /示例/道具” 没有斜线,它有效。

如何在我的应用程序中使用该代码?任何workaroud? (我必须通过反思来称呼它)

由于

1 个答案:

答案 0 :(得分:1)

  1. 如果您假设JVM类加载器是URLClassLoader,那么请注意JDK不保证这一点,并且从Java 9(JEP 261)开始可能不是这样。

  2. URLClassLoader.getResourceAsStream不应该传递给前导&#34; /&#34;,这可能是第三方JAR中的错误。您最好的选择是在自定义ClassLoader中加载第三方JAR(例如,您自己的URLClassLoader的子类),它可以处理该领先的&#34; /&#34; (例如,覆盖getResourceAsStream,删除&#34; /&#34;,并委托给URLClassLoader)。