这是我项目的结构.
proj
---src
----main
----java
----Main.java
----resources
----res.txt
Run Code Online (Sandbox Code Playgroud)
我在Eclipse中使用m2eclipse插件.在Main.java中,我有
File f = new File("res.txt"); System.out.println(f.getAbsolutePath());
Run Code Online (Sandbox Code Playgroud)
当我运行mvn exec:java时,打印出的路径是"...\proj\res.txt".如何在"...\proj\target\classes"目录中查找资源文件?
编辑:
谢谢你原来的问题的答案.我有一个后续问题:
基本上我想做的是让Main类读取"res.txt"然后生成一个新的"newres.txt"到资源目录,这样我就可以将这个新的"newres.txt"打包到jar文件中在包装阶段之后.目前我将这个exec:java挂载到prepare-package阶段.如何在资源目录中创建这个"newres.txt"而没有硬编码的绝对路径或者取决于Maven的目录结构?
wei*_*wei 20
我想我会回答我自己的问题,Thread.currentThread().getContextClassLoader().getResourceAsStream()
对我来说效果最好,特别是当项目为另一个Web项目产生一个jar依赖项时.
Cug*_*uga 14
图我想添加答案.
您还可以使用:
InputStream file = ClassLoader.getSystemResourceAsStream("res.txt");
Run Code Online (Sandbox Code Playgroud)
Jér*_*nge 12
尝试
InputStream IS = Main.class.getResourceAsStream("res.txt");
Run Code Online (Sandbox Code Playgroud)
访问的内容res.txt.注意文本文件的编码(注意默认值).例如,如果您的maven项目设置为UTF-8,请确保res.txt以UTF-8编码,否则,您将在运行时遇到有趣的错误.
| 归档时间: |
|
| 查看次数: |
28661 次 |
| 最近记录: |