Java 属性文件不工作

Java 属性文件不工作,java,jsp,servlets,properties,nullpointerexception,Java,Jsp,Servlets,Properties,Nullpointerexception,我试图找到一种方法,如何在我的JavaServlet扩展HTTPServlet中使用属性文件。我已经尝试使用ClassLoaderGetResourceStream和ServletContextgetResourceAsStream。但无论我在做什么,都不起作用,而且总是存在NullPointerException database.properties文件: 代码: 文件树: Java Resources |-- src |-- login |-- Login.j

我试图找到一种方法,如何在我的JavaServlet扩展HTTPServlet中使用属性文件。我已经尝试使用ClassLoaderGetResourceStream和ServletContextgetResourceAsStream。但无论我在做什么,都不起作用,而且总是存在NullPointerException

database.properties文件:

代码:

文件树:

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