【问题标题】:Java Servlet says file does not existJava Servlet 说文件不存在
【发布时间】:2010-06-09 20:47:12
【问题描述】:

我开发了一个 java servlet,它监视网络驱动器上的文件夹中的新文件,然后根据文件的类型对它们执行一些操作。当 Eclipse 和 Tomcat 相互运行时,它在 Eclipse 中工作,但是现在我已经将它部署到服务器(不同的机器)上,servlet 不断记录它找不到要映射的文件夹。映射完全相同的网络驱动器,并且该文件夹肯定存在。仅当 servlet 在服务器上运行时才会出现此问题,而不是在开发机器上运行。

谢谢!

PS: 它是安装了 Tomcat v6 的 Windows Server 2003 Enterprise Server。

【问题讨论】:

    标签: java windows tomcat network-programming


    【解决方案1】:

    您是否在代码中使用相对路径来查找文件?当代码在 IDE 或本地 Tomcat 中运行时,到达文件系统中文件的路径很可能与在其他机器/环境上运行时到达文件的路径不同。

    最好的办法是从代码中完全删除路径,然后从配置文件中加载它们。

    【讨论】:

    • 我做了,并且重新配置了服务器的配置文件,但是,因为它是一个网络驱动器,该文件位于两台机器的E盘上。
    【解决方案2】:

    我终于明白了。

    事实证明,当 Tomcat 运行时(显然)它是作为服务运行的。该服务与用户看待事物的方式不同。事实证明,Windows 仅在 USER 级别安装网络驱动器。因此,根据系统,驱动器不存在。解决方法是使用 UNC 路径名。

    我最初尝试过,但没有成功,原因是服务没有正确的权限。

    感谢所有帮助过我的人。

    http://wiki.apache.org/tomcat/FAQ/Windows#Q7

    【讨论】:

      【解决方案3】:

      你可以试试这个 API 的输出来检查文件路径是否是你所期望的

      http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletContext.html#getRealPath(java.lang.String)

      【讨论】:

      • 如果这是一个愚蠢的问题,请原谅我,但我不断收到 this.getServletContext(); 行的 NullPointerException。为什么这会是空的?
      • 也许你也想查看这个链接coderanch.com/t/360208/Servlets/java/…
      • 我得到了它的工作,文件路径确实不是我所期望的。谢谢,现在来看看如何解决它!
      • 我又被难住了。现在我发现文件路径不是我所期望的,我该怎么办?我可以更改 servlet 上下文吗?
      • 在一些配置文件中添加文件路径,可能是个好主意
      猜你喜欢
      • 2013-10-18
      相关资源
      最近更新 更多