问题描述
在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();