怎样从容器中jar包里面加载资源文件
直接把你的外部jar加载到systemclassloader试试看
可以通过反射的方式实现
for example
URLClassLoader loader = (URLClassLoader) ClassLoader.getSystemClassLoader();
Method method = URLClassLoader.class.getDeclaredMethod(“addURL”, new Class[] { URL.class }); //反射获取方法
method.setAccessible(true);
File jar = new File(yourjarpath); //外部jar路径
URL url = jar.toURI().toURL();
method.invoke(loader, new Object[]{url}); //加载jar到systemclassloader
java应用程序错误无法启动该应用程序无法加载资源
.检查程序的配置文件,确保正确配置了资源文件的路径。
2.检查资源文件的格式是否正确,确保资源文件的格式与程序要求的格式一致。
3.检查资源文件是否完整,确保所需要的资源文件都存在。
4.检查程序的编译环境,确保已正确安装了 Java 运行环境。
5.检查程序的类路径是否正确
用java 如何读取配置文件(如:资源文件)中配
java读取配置文件的几种方法如下:
方式一:采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来。因为是用ServletContext读取文件路径,所以配置文件可以放入在web-info的classes目录中,也可以在应用层级及web-info的目录中。文件存放位置具体在eclipse工程中的表现是:可以放在src下面,也可放在web-info及webroot下面等。因为是读取出路径后,用文件流进行读取的,所以可以读取任意的配置文件包括xml和properties。缺点:不能在servlet外面应用读取配置信息。
方式二:采用ResourceBundle类读取配置信息,
优点是:可以以完全限定类名的方式加载资源后,直接的读取出来,且可以在非Web应用中读取资源文件。缺点:只能加载类classes下面的资源文件且只能读取.properties文件。
方式三:采用ClassLoader方式进行读取配置信息
优点是:可以在非Web应用中读取配置资源信息,可以读取任意的资源文件信息
缺点:只能加载类classes下面的资源文件。
方法4 getResouceAsStream
XmlParserHandler.class.getResourceAsStream 与classloader不同
使用的是当前类的相对路径
JAVA 加载资源文件的问题
1.
这一句指定的文件的名字,也就是SysConstants这个类中存在一个叫做SYS_PROPERTYNAME的变量,它的值就是sys.properties,也就是这样的
public static String SYS_PROPERTYNAME=”sys.properties”,你想在加载sys2.properties文件,只需再增加public static String SYS_PROPERTYNAME2=”sys2.properties”,再用上面的load方法加载即可。也就是p.load(Tools.class.GetClassLoader().getResourceAsStream(SysCOnstants.SYS_PROPERTYNAME2));即可。
2.通过类装载器来装载资源文件,这样就不必写出资源文件的全路径了。
3.加载后的资源文件你可以理解成一个map(类似),等号前边的是key,等号后边的是值。
JAVA 读取资源文件的问题
getvalue();获取的是配置文件中的配置参数:
例如配置文件如下:
key1=xxxxx1;
key2=xxxxx2;…
资源文件加载后,getVlaue(key1)的值就是:xxxxx1,而不是那个类的值。