从 JAR 加载资源而不访问 ClassLoader?

Posted

技术标签:

【中文标题】从 JAR 加载资源而不访问 ClassLoader?【英文标题】:Load resource from JAR without accessing ClassLoader? 【发布时间】:2010-12-25 04:50:58 【问题描述】:

有没有一种简单的方法可以在不访问 ClassLoader 的情况下从我自己执行的 JAR 作为 InputStream 加载资源?问题是我的 java.policy 限制访问 ClassLoader(这不能更改)。我想加载一些 xml 配置,我可以将其放在我的 JAR 中的任何位置,但不能将它放在 JAR 之外。

感谢您的回答。 其实我的问题不在于我自己的 ClassLoader。我正在使用 XStream,它想要创建一些类加载器和应用程序崩溃:

java.security.AccessControlException:访问被拒绝(java.lang.RuntimePermission createClassLoader) 在 java.security.AccessControlContext.checkPermission(AccessControlContext.java:323) 在 java.security.AccessController.checkPermission(AccessController.java:546) 在 java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 在 java.lang.SecurityManager.checkCreateClassLoader(SecurityManager.java:594) 在 java.lang.ClassLoader.(ClassLoader.java:226) 在 com.thoughtworks.xstream.core.util.CompositeClassLoader.(CompositeClassLoader.java:50)

【问题讨论】:

【参考方案1】:

Class.getResource/getResourceAsStream.

事实上,无论安全策略如何,一个类应该始终能够获得自己的类加载器。

【讨论】:

以上是关于从 JAR 加载资源而不访问 ClassLoader?的主要内容,如果未能解决你的问题,请参考以下文章