我的一个Tool类的代码:package util;import java.io.InputStream;
import java.util.Properties;
public final class Tool {
private final static Properties sysProp;
static{
Logger.println("Initializing System properties...");
sysProp=new Properties();
InputStream in=null;
try{
System.out.println(sysProp.getClass().getClassLoader());
in=sysProp.getClass()
.getResourceAsStream("/util/web.properties");
sysProp.load(in);
Logger.println("Initialize system properties done.");
}
catch(Exception e){
Logger.println("Exception while initializing system properties.");
e.printStackTrace();
}
finally{
if(in!=null){
try{in.close();}
catch(Exception e){}
}
}
}
public static String getProp(String key){
return sysProp.getProperty(key);
}
public static void test(){
System.out.println("test");
}
public static void main(String args[]){
test();
}
}在Eclipse中直接执行这个类的main()方法,正常.能找到同一目录下的web.properties而如果是在jsp页面上调用这个tool类,则in=sysProp.getClass()
.getResourceAsStream("/util/web.properties"); 返回的是null.请大家指点!!谢谢!!
import java.util.Properties;
public final class Tool {
private final static Properties sysProp;
static{
Logger.println("Initializing System properties...");
sysProp=new Properties();
InputStream in=null;
try{
System.out.println(sysProp.getClass().getClassLoader());
in=sysProp.getClass()
.getResourceAsStream("/util/web.properties");
sysProp.load(in);
Logger.println("Initialize system properties done.");
}
catch(Exception e){
Logger.println("Exception while initializing system properties.");
e.printStackTrace();
}
finally{
if(in!=null){
try{in.close();}
catch(Exception e){}
}
}
}
public static String getProp(String key){
return sysProp.getProperty(key);
}
public static void test(){
System.out.println("test");
}
public static void main(String args[]){
test();
}
}在Eclipse中直接执行这个类的main()方法,正常.能找到同一目录下的web.properties而如果是在jsp页面上调用这个tool类,则in=sysProp.getClass()
.getResourceAsStream("/util/web.properties"); 返回的是null.请大家指点!!谢谢!!
===========================================================================
ClassLoader.getResourceAsStream(name);路径问题InputStream in = getClass().getResourceAsStream('/'+"spring-beans.dtd"); 表示从classs目录下面的找文件,文件放在src下面就可以了.
InputStream in = getClass().getResourceAsStream("spring-beans.dtd"); 表示从当前classs下面的路径找文件
如果是在com.a.b.c.d.Test这个class就表示spring-beans.dtd要放在目录src\com\a\b\c\d下.SAXBuilder builder = new SAXBuilder();
EntityResolver resolver = new EntityResolver() { public InputSource resolveEntity(String publicId,
String systemId) {
if (publicId.equals("-//SPRING//DTD BEAN//EN")) {
InputStream in = getClass().getResourceAsStream(
'/'+"spring-beans.dtd");
return new InputSource(in);
} else {
return null;
}
} };
builder.setEntityResolver(resolver);这样才能解决dtd的本地查找问题.
那么你得 配置资源文件应该放在 WEB-INF\classes\util\web.properties 中!!
你访问的方式以
in=sysProp.getClass()
.getResourceAsStream("/util/web.properties"); 的形式;
也就是说,你得 "配置资源文件" 是在 classes 目录下面的 ,如果你加入了其他目录,
那么你就应该在classes 中配置相应的目录如果嫌我没解释清楚,你可以进 google 搜索 java 文件路径
我的那个web.properties是和Tool.class在同一个目录的.编译后都在web-inf/class/util/下.
出现问题在于,用eclipse中直接运行Tool中的main(),能找到这个资源,
而运行tomcat,在jsp页面中使用Tool类的时候,找不到资源啊.
配置资源文件应该放在 WEB-INF\classes\util\web.properties 中!!
我的资源文件的路径就是这样的,
问题是:运行Tool中main()没问题,而jsp中调用Tool时找不到此资源文件.
我的资源文件的路径就是这样的,
问题是:运行Tool中main()没问题,而jsp中调用Tool时找不到此资源文件.
in=sysProp.getClass()
.getResourceAsStream("util/web.properties"); 或者等等
不行就先取到项目所在的路径,然后加上 util/web.properties试试行不行
关键是如何解释main运行与tomcat运行时的差别啊.
多谢!