java - 从类路径加载资源时出现问题

标签 java tomcat path


在本地 tomcat 中运行的 Web 应用程序中,我试图加载位于 tomcat/webapps/myproject/WEB-INF/folder 中的文件夹 /folder 要做到这一点:

InputStream realPath = getClass().getClassLoader().getResourceAsStream("/folder");  

返回 null。这段代码应该从类路径加载资源,如果我的文件夹所在的路径没有错的话。
无论如何,我将我的文件夹移动到不同的路径,例如 tomcat/webapps/myproject/WEB-INF/classes/foldertomcat/webapps/myproject/WEB-INF/lib/folder 结果相同。
我错过了什么?提前致谢。

关于您的所有回答(谢谢),我用我尝试过的所有方法编辑了我的问题,但结果相同。
一)

 String realSource = getServletContext().getRealPath("/folder");  

B)

InputStream realPath = getClass().getClassLoader().getResourceAsStream("/folder/fileInFolder"); 

C)

ServletContext servletContext = (ServletContext)context.getExternalContext().getContext();
String realSource = servletContext.getRealPath("/folder");

我必须说我的文件夹路径是tomcat/webapps/myproject/WEB-INF/classes/folder

最佳答案

问题是/WEB-INF 不在 WAR 文件的 CLASSPATH 中。

/WEB-INF/classes 在 CLASSPATH 中;/WEB-INF/lib 中的所有 JAR 也是如此。

如果您将需要的文件放入/WEB-INF/classes,WAR 类加载器应该能够找到它。

您不能以这种方式读取目录。它必须是一个文件。

更新:

Anyway, I moved my folder to different paths, such as tomcat/webapps/myproject/WEB-INF/classes/folder or tomcat/webapps/myproject/WEB-INF/lib/folder with the same result. Did I miss something?

是的,您错过了两件事:

  1. 你的文件夹应该放在一个地方 - 在/WEB-INF/classes 下
  2. 您无法使用 getResourceAsStream() 访问该文件夹并读取所有内容。它不是那样工作的。您只能以这种方式阅读一个单独的文件。

关于java - 从类路径加载资源时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3889218/

相关文章:

java - json 中的语言特定字符

java - 检查两个 Path2D 之间的交集

java - 无法从对象复制到 String 数组

java - 获取服务器上的文件路径时出错

java - 在 Tomcat : InvocationTargetException 上运行 Servlet 的问题

SQL - 将非空邻接列表转换为路径

python - 在 Mac OSX 中,Weka 无法识别 Python(可能的 Python 冲突)

java - 在不使用正则表达式的情况下,判断一个字符是 Java 中的字母还是数字的最佳方法是什么?

java - 在 Android Studio 上使用 Powermock(带有 mockito)运行简单单元测试时出现运行时异常

java - 这段代码有什么问题?