【问题标题】:Error while running a servlet (apache tomcat cannot find .properties file)运行 servlet 时出错(apache tomcat 找不到 .properties 文件)
【发布时间】:2012-09-21 07:22:40
【问题描述】:

任何其他 servlet 在 eclipse-apache/tomcat 集成上运行良好。 但是当我在其中一个类中添加属性文件时,我得到了这个错误-

HTTP 状态 500 - 类型异常报告

消息描述: 服务器遇到一个内部错误 () 阻止它完成此请求。

异常

java.io.FileNotFoundException: xyz.properties(系统找不到指定的文件) java.io.FileInputStream.open(本机方法) java.io.FileInputStream.(未知来源) java.io.FileInputStream.(未知来源) xyz.DatabaseConnection(DatabaseAccess.java:23) xyz.HelloServlet.doGet(HelloServlet.java:22) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

我是否必须在 web.xml 文件中进行某种修改以让它知道 xyz.properties 文件存在的位置?

P.S - 文件和包名已被“xyz”审查。

【问题讨论】:

  • 那么,您实际上将所谓的xyz.properties 文件保存在哪里?
  • 与servlet类在同一个包中
  • 非常感谢大家,我从这个页面得到了答案-stackoverflow.com/questions/2161054/…

标签: java tomcat servlets web.xml eclipse-indigo


【解决方案1】:

您不需要编辑 web.xml。

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Properties properties = new Properties();
properties.load(classLoader.getResourceAsStream("xyz.properties"));

这假定 xyz.properties 文件位于类文件夹中。

【讨论】:

    【解决方案2】:

    我认为属性文件不在类路径中。请尝试将属性文件放在WEIB-INF/classes 文件夹中,看看是否可以解决此问题。

    【讨论】:

    • 能否确保代码中引用的属性文件名与实际文件名相同?
    • 是的,它们是一样的。我在另一个类中使用了属性文件,效果很好。只是 servlet 类不起作用。
    • 只是一个调试步骤:尝试在 Servlet 中给出属性文件的绝对路径,看看它是否正确加载。
    • @RaulGogo 这只是一个建议,而不是规则,我明白这一点。文件可以在任何地方。这肯定不会要求投票。
    • 我的理解是,属性文件位于 WEB-INF 文件夹中是一条规则,这就是反对的原因。不幸的是,除了帖子被编辑外,我无法删除我的反对票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多