我在Eclipse中编写了一个简单的Hello World Servlet,在HelloWorldServlet.java的doGet方法中包含以下内容
PrintWriter writer = response.getWriter();
String hello = PropertyLoader.bundle.getProperty("hello");
writer.append(hello);
writer.flush();
PropertyLoader是与Servlet相同的包中的一个简单类,它执行以下操作:
public class PropertyLoader {
public static final Properties bundle = new Properties();
static {
InputStream stream = null;
URL url = PropertyLoader.class.getResource("/helloSettings.properties");
stream = new FileInputStream(url.getFile());
bundle.load(stream);
}
}//End of class
我在/ WebContent / WEB-IND / classes中放置了一个名为helloSettings.properties的文件,其中包含以下单行内容:
hello=Hello Settings World
当我将Tomcat 6.0添加到我的项目并在eclipse中运行时,它成功打印
“Hello Settings World”到网络浏览器。
但是,当我将项目导出为war文件并手动将其放入时 ... / Tomcat 6.0 / webapps然后我得到“null”作为我的结果。
classpath / classloader配置有问题吗?权限?任何其他配置文件?我知道helloSettings.properties文件位于WEB-INF / classes文件夹中。
任何帮助?
答案 0 :(得分:0)
好吧,经过大量浏览后,我发现为什么要做我想做的事情似乎是“正常”:
public class PropertyLoader {
public static final Properties bundle = new Properties();
static {
InputStream stream = null;
URL url = PropertyLoader.class.getResource("/helloSettings.properties");
stream = new FileInputStream(url.getFile());
bundle.load(stream);
}
}//End of class
public class PropertyLoader {
public static final Properties bundle = new Properties();
static {
InputStream stream = null;
stream = SBOConstants.class.getResourceAsStream("/sbonline.properties");
bundle.load(stream);
}
}//End of class
我正在修改别人的代码,所以我不确定他们为什么一开始就采用其他方式...但我猜url.getFile()
是我的问题,我不知道为什么。< / p>