当前位置: 代码迷 >> java >> 如何通过在Tomcat 8.0中运行的JSP加载非配置文件
  详细解决方案

如何通过在Tomcat 8.0中运行的JSP加载非配置文件

热度:94   发布时间:2023-07-17 21:00:57.0

在Eclipse Luna中,我在Apache Tomcat 8.0上有一个动态Web项目 (具有默认的构建设置)。 在项目中,我有一个JSP loader.jsp ,它调用Java类FileLoader中的方法,该方法返回非配置txt文件位置的String值(我们称其为key.txt )。

我的问题是,当FileLoader尝试获取key.txt并返回其位置时,我得到的文件位置为空值。

这是我尝试过并失败的想法:

FileLoader构造函数中,我将String "key.txt"作为值传递给它,并且它具有一个名为get getKeyPath()的方法,该方法返回文件路径。 我在getKeyPath()使用以下getKeyPath()获取文件路径:

String path = this.getClass().getClassLoader().getResource("key.txt").getFile();

path变量返回到调用对象。 这是我在loader.jsp调用getKeyPath()loader.jsp

String keyPath = new FileLoader("key.txt").getKeyPath();

我的问题是,当getKeyPath()尝试设置路径值时, FileLoader会引发NullPointerException 我迷路了,因为无论将物理“ key.txt”放在项目目录中还是项目应识别的文件路径中,都会发生这种情况。 在我的项目中,我在以下路径尝试了带有key.txt的上述代码(假设我在Eclipse中项目的根文件夹称为PRO):

专业/构建/类
专业版
PRO / WebContent / WEB-INF / lib
PRO / WebContent(loader.jsp所在的位置)
PRO / Java资源/ src(Tomcat安装)
目录> / lib / bin

对于所有尝试,我都得到相同的NullPointerException 诉诸Tomcat目录后,我意识到需要帮助。

我还有其他需要做的事情,以便可以按我想要的方式加载“ key.txt”吗? 我这样做是完全错误的吗? 如果可以简化回答,我可以发布屏幕截图。

loader.jsploader.jsp ,由于应用程序要求,我希望loader.jsp不直接加载key.txt 当然,如果我无法尝试,则必须这样做。

请注意,我试图在Eclipse动态Web项目中执行此操作,因此没有像标准Java项目那样的“ bin”文件夹。 最后,我不想在Eclipse中进行任何构建配置更改,但是如果需要的话,我当然会做。

将初始化和方法调用分成两行。

问题不是文件未加载,而是当时.getKeyPath(); 称为对象感染没有完成,并且是NullPointer的原因

因此更改为:

FileLoader FileLoader fileLoader = new FileLoader("key.txt"); 
String keyPath = fileLoader.getKeyPath(); 
  相关解决方案