java - Tomcat 8.0中运行的JSP如何加载非Config文件

标签 java eclipse jsp tomcat servlets

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

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

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

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

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

路径变量返回给调用对象。以下是我在 loader.jsp 中调用 getKeyPath() 的方式:

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

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

PRO/build/classes
PRO/build
PRO/WebContent/WEB-INF/lib
PRO/WebContent(where loader.jsp is located)
PRO/Java Resources/src (Tomcat Install)
Dir>/lib /bin

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

我还需要做些什么才能以我想要的方式加载“key.txt”吗?我这样做完全错了吗?如果这样可以更轻松地回答这个问题,我可以发布屏幕截图。

顺便说一句,由于应用程序要求,我希望 loader.jsp 不直接加载 key.txt。当然,如果我的尝试无法实现,我将不得不这样做。

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

最佳答案

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

问题不在于文件未加载,而是在调用 .getKeyPath(); 时未完成对象初始化,而 NullPointer 的原因/p>

所以改成这样:

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

关于java - Tomcat 8.0中运行的JSP如何加载非Config文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31735972/

相关文章:

java - 为什么 for-each 循环不允许增量整数?

java - 如何配置 dao 文件来处理在 MyBatis 中插入 List<String>

java - 模拟结果集 getTimeStamp 不适用于超过 1 行

java - 如何在 Eclipse 中重命名一个类及其对应的文件?

android - Eclipse 音池加载错误

java - 如何在 Android 中使用 Proguard 并保护应用程序的功能完整性?

java - 异常 : java. sql.SQLSyntaxErrorException: 'AIRPLANE_ID' 不是表中的列

java - JSP 页面永远缓存在 tomcat 中

java - 与数据库连接的简单jsp

css - 是否可以在 IE 标准 View 中显示 jsp 页面,但不能在兼容 View 中显示