Java 属性文件不工作
我试图找到一种方法,如何在我的JavaServlet扩展HTTPServlet中使用属性文件。我已经尝试使用ClassLoaderGetResourceStream和ServletContextgetResourceAsStream。但无论我在做什么,都不起作用,而且总是存在NullPointerException database.properties文件: 代码: 文件树:Java 属性文件不工作,java,jsp,servlets,properties,nullpointerexception,Java,Jsp,Servlets,Properties,Nullpointerexception,我试图找到一种方法,如何在我的JavaServlet扩展HTTPServlet中使用属性文件。我已经尝试使用ClassLoaderGetResourceStream和ServletContextgetResourceAsStream。但无论我在做什么,都不起作用,而且总是存在NullPointerException database.properties文件: 代码: 文件树: Java Resources |-- src |-- login |-- Login.j
Java Resources
|-- src
|-- login
|-- Login.java
WebContent
|-- WEB-INF
|-- properties
|-- database.properties
为什么不使用ResourceBundle呢。它使用起来很简单。将属性文件放置在源文件夹中,然后
在要访问属性的位置,请使用以下代码:
String driverString=DatabaseConstantsAccessor.getString("Driver");
Integer intProp=Integer.valueOf(DatabaseConstantsAccessor.getString("SomeIntProperty"));
为什么不使用ResourceBundle呢。它使用起来很简单。将属性文件放置在源文件夹中,然后
在要访问属性的位置,请使用以下代码:
String driverString=DatabaseConstantsAccessor.getString("Driver");
Integer intProp=Integer.valueOf(DatabaseConstantsAccessor.getString("SomeIntProperty"));
我同意dj aqeel的观点,但要获得ResourceBundle,它必须位于类目录中 因此,我将文件放在/WEB-INF/classes/properties/database.properties中。显然,您必须将文件放在src目录中,编译器会自动移动到那里
Marcos我同意dj Aqueel的观点,但要获得ResourceBundle,它必须位于类目录中 因此,我将文件放在/WEB-INF/classes/properties/database.properties中。显然,您必须将文件放在src目录中,编译器会自动移动到那里
马可斯检查所有姓名。您的代码运行正常。检查所有名称。您的代码运行正常。试试这个 编辑 顺便说一句,您需要将database.properties移到/WEB-INF/classes文件夹中,这样才能工作 文件夹结构应为 试试这个 编辑 顺便说一句,您需要将database.properties移到/WEB-INF/classes文件夹中,这样才能工作 文件夹结构应为
请在您的问题中包括异常。哪一行抛出空指针异常?我在那一行中得到错误,在这一行中我将属性加载到变量p->p.load。。。;请在您的问题中包括异常。哪一行抛出空指针异常?我在那一行中得到错误,在这一行中我将属性加载到变量p->p.load。。。;可以我尝试了您的代码,但仍然得到HTTP状态500-实例化servlet类login.login时出错。严重:为servlet登录java.util.MissingResourceException分配异常:找不到基本名称数据库的捆绑包,区域设置de_AT@Maexwell请确保database.properties文件位于src文件夹中。如果仍然无法解决问题,则按如下方式更改初始化调用:private static final ResourceBundle RESOURCE\u BUNDLE=ResourceBundle.getbundle\u NAME,;非常感谢你!!!它现在正在工作:-我犯了一个错误,将属性文件放在包中,而不仅仅是放在src文件夹中。。。谢谢:-@Maexwell哦,太好了,我很高兴我帮助了你可以我尝试了您的代码,但仍然得到HTTP状态500-实例化servlet类login.login时出错。严重:为servlet登录java.util.MissingResourceException分配异常:找不到基本名称数据库的捆绑包,区域设置de_AT@Maexwell请确保database.properties文件位于src文件夹中。如果仍然无法解决问题,则按如下方式更改初始化调用:private static final ResourceBundle RESOURCE\u BUNDLE=ResourceBundle.getbundle\u NAME,;非常感谢你!!!它现在正在工作:-我犯了一个错误,将属性文件放在包中,而不仅仅是放在src文件夹中。。。谢谢:-@Maexwell哦,太好了,我很高兴我帮助了你谢谢但是我仍然会得到与不使用/classesthanks时相同的错误!但是我仍然会得到与不使用/classesnope时相同的错误。没有什么我必须在web.xml中编辑任何内容吗??javax.servlet.GenericServlet.getServletContextGenericServlet.java:125 at login.login.login.java:23->login.java:23是将属性加载到pCan中的行,您告诉我如何执行它-从Eclipse服务器插件/或构建war并部署到独立服务器我正在使用Eclipse和Tomcat服务器只需单击按钮Run Login.java;-我要在独立服务器上运行吗?它不应该是“在服务器上运行”,我希望它是一个动态的Web项目吗?不。没有什么我必须在web.xml中编辑任何内容吗??javax.servlet.GenericServlet.getServletContextGenericServlet.java:125 at login.login.login.java:23->login.java:23是将属性加载到pCan中的行,您告诉我如何执行它-从Eclipse服务器插件/或构建war并部署到独立服务器我正在使用Eclipse和Tomcat服务器只需单击按钮Run Login.java;-我要在独立服务器上运行吗?它不应该是“在服务器上运行”,我希望它是一个动态的Web项目吗?
import java.util.MissingResourceException;
import java.util.ResourceBundle;
public class DatabaseConstantsAccessor
{
// don't include .properties extension, just specify the name without extension
private static final String BUNDLE_NAME = "database";
private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
private ConstantsAccessor()
{
}
public static String getString(String key)
{
try
{
return RESOURCE_BUNDLE.getString(key);
}
catch (MissingResourceException e)
{
return '!' + key + '!';
}
}
}
String driverString=DatabaseConstantsAccessor.getString("Driver");
Integer intProp=Integer.valueOf(DatabaseConstantsAccessor.getString("SomeIntProperty"));
p.load(getServletContext().getClassLoader().getResourceAsStream("properties/database.properties"));
WEB-INF
| classes
|properties
database.properties