问题描述
在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.jsp说loader.jsp ,由于应用程序要求,我希望loader.jsp不直接加载key.txt 。
当然,如果我无法尝试,则必须这样做。
请注意,我试图在Eclipse动态Web项目中执行此操作,因此没有像标准Java项目那样的“ bin”文件夹。 最后,我不想在Eclipse中进行任何构建配置更改,但是如果需要的话,我当然会做。
1楼
将初始化和方法调用分成两行。
问题不是文件未加载,而是当时.getKeyPath();
称为对象感染没有完成,并且是NullPointer的原因
因此更改为:
FileLoader FileLoader fileLoader = new FileLoader("key.txt");
String keyPath = fileLoader.getKeyPath();