从 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?的主要内容,如果未能解决你的问题,请参考以下文章
Applet加载来自不同域的jar;从坛子加载资源(例如图像)有问题
从 Eclipse 调试 SplashScreen 而不生成 Jar
如何在模块化的 java 11 应用程序中动态加载 Libreoffice jar,而不从自定义类加载器中获取 ClassCastException