Posted on 2008-12-10 20:59
leekiang 阅读(194)
评论(0) 编辑 收藏 所属分类:
java
普通的写法在weblogic的war包中读取不到资源,尝试以下的写法
public static final String PROPERTIES_FILE_NAME = "/*.xml";
path = this.getClass().getResource("").getPath();
int pos = path.indexOf("WEB-INF");
path = path.substring(0, pos)+"WEB-INF\\classes";
file = new File(path, PROPERTIES_FILE_NAME);
把文件放到web-inf/classes 的目录下面我想应该不会在出现这样的问题了
以下摘自http://topic.csdn.net/t/20050915/16/4272932.html
Class 类提供了下面的方法:
public java.io.InputStream getResource(java.lang.String path)
// Thread.getContextClassLoader(); 能得到
WebApps的当前类加载器,如果你的调用是在你自己写的 Java 类中(它放在 /WEB-INF/classes 或
/WEB-INF/lib 的 jar 中,web 应用程序的根:
%APP_BASE%/
路径下的所有东西都归 ContextClassLoader 来加载的,如果你的 getResource 调用是在
/WEB-INF/classes 下的一个 .class 中发出的那么直接
getClass().getResource('/WEB-INF/web.xml'); 否则你要
Thread.getContextClassLoader().getResource("/WEB-INF/web.xml");
URL url = getClass().getResource("/WEB-INF/web.xml");
//返回 :jar:file:/C:/tomcat/webapps/mywebapps.war!/WEB-INF/web.xml ;
字符串查找 : url.getProtocol() 返回 jar, 后面开始一直到 !/ 位置的这中间部分就是文件位置。
相关:
Java程序中的配置文件的存放和读取 http://hdwangyi.javaeye.com/blog/105512
http://www.blogjava.net/crazycy/archive/2008/03/18/187056.html
http://www.jguru.com/faq/view.jsp?EID=416061
http://www.javaresearch.org/article/7499.htm