java - TomCat:使用类路径打开文件

标签 java eclipse tomcat file-io

我想在 Tomcat 上运行服务器应用程序时打开磁盘上的文件。当我打印我的类路径时,我得到了

C:\JavaDev\tools\apache-tomcat-6.0.33\bin\bootstrap.jar;
C:\Program Files\Java\jdk1.6.0_23\lib\tools.jar

这对我来说意义不大,但话又说回来,我什至对它的工作原理没有基本的了解。我的项目从哪里加载?他们不需要在类路径上吗?

这是我当前正在处理的域的目录布局:

src/main/java/com/company/product/domain/b/beans/MyClass.java
src/main/resources/whatever/myfile.txt

我已经尝试使用以下方式打开文件:

String filename = "../resources/whatver/myfile.txt";
URL url = MyClass.class.getResource(filename);

url==null 每次。在我尝试过的其他路径变体中:

whatver/myfile.txt
../whatver/myfile.txt
../../../../../../../resources/whatver/myfile.txt

我需要一个我可以提交的解决方案(即不存储在 Eclipse 工作区中),因此并非所有团队成员都必须更新他们的设置。

这是我正在使用的环境:

  • Tomcat 6.0
  • 面向 Web 开发人员的 Eclipse Java EE IDE,版本:Helios Service Release 2
  • Maven 3.0.3 (r1075438; 2011-02-28 18:31:09+0100)

最佳答案

在Maven项目中,resources中的文件通常会被打包到classpath的某个地方。试试这个:

InputStream in = this.getClass().getClassLoader().getResourceAsStream("whatever/myfile.txt");

这是一个由 Maven 打包为 .war 的 Web 应用程序吗?

关于java - TomCat:使用类路径打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11969721/

相关文章:

java - 为什么即使同步了列表也会出现ConcurrentModificationException?

java - 如何正确地将 json 转换为对象,其中键实际上是一个变化的值?

java - Eclipse 双分隔符从逗号 (,) 到点 (.)

java - 如何自定义 Eclipse 关于对话框的关于文本?

java - jsf *.xhtml 映射不起作用,重定向到 jsp

java - Stream Java 中的私有(private)排序规则

eclipse - 在 Maven 构建结束时刷新 eclipse-project

spring - 一些 Rest API 只能在 https 上访问,而另一些只能在 http 上访问

java - tomcat运行报错: Application not found

java - 如何用http2.0启动tomcat