java - 在 Openshift 上的 servlet 中打开资源文件

标签 java tomcat servlets deployment openshift

我无法在我的网络应用程序中打开文件。我在 Eclipse 中本地尝试过它并且工作正常但是当我尝试将它部署在 Openshift 上的 Tomcat 6 上时它找不到我的网络应用程序的资源文件。 WEB-INF目录下的ProjectFiles目录下有一些txt文件;本地打开文件的代码是

String nome_file = "C\:\\Users\\miKKo\\workspace\\fantacalcio_project\\WebContent\\WEB-INF\\ProjectFiles\\Risultati\\risultati_" + nome_lega + ".txt"; 

BufferedReader reader = new BufferedReader(new FileReader(nome_file));

我已经将它们推送到 Git 中的同一个存储库中(在服务器上我将我的项目重命名为“ROOT”)并且我已经用这个替换了字符串

String nome_file = this.getServletConfig().getServletContext().getContextPath()+"/WebContent/WEB-INF/ProjectFiles/Risultati/risultati_" + nome_lega + ".txt";

但它不起作用。我也尝试过使用上下文属性

/var/lib/openshift/51c6178a5004467630000019/jbossews/work/Catalina/localhost/_/WEB-INF/ProjectFiles

但是抛出的异常总是

java.io.FileNotFoundException: (#path) (No such file or directory)

我能为此做什么?

最佳答案

假设您的文件位于以下位置:

/WEB-INF/ProjectFiles/Risultati/risultat_text_file.txt

然后使用:

String path = "/WEB-INF/ProjectFiles/Risultati/risultat_text_file.txt";
InputStream inputStream =  new FileInputStream(this.getServletConfig().getServletContext().getRealPath(path));

应该适合你。请注意,ServletContext.getRealPath()返回对应于给定虚拟路径的真实操作系统路径。

编辑:

如果这对您的情况不起作用,您真的需要重新访问您的虚拟路径。您可以手动检查此文件是否存在于 war 文件的预期目录中,或者您可以记录 getRealPath() 方法的输出以检查到底发生了什么!如有必要,您可以将 "/" 放入您的 getRealPath() 方法中,并检查您的应用程序的根路径是什么。

关于java - 在 Openshift 上的 servlet 中打开资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17382775/

相关文章:

java - 在泛型类中创建泛型方法名称?

java - 将值添加到 recyclerView 的部分中

java - 使用 Jconsole 处理内存泄漏

java - 使用 Java 读取非常大的文件

java - 为什么我得到 Unsupported major.minor version 52.0?

java - 编写用于连接服务器的桌面应用程序

java - 在 AffineTransform.rotate() 之后检索 BufferedImage 边界的新宽度和高度

java - Eclipse 热键在 XFCE 中不起作用

Java Web应用程序 "Event Listener for Expired Sessions"

java - 是否可以在 Tomcat 中终止 session 或强制 session 过期,无论是 Activity 的还是非 Activity 的?