Ste*_*all 5 java file-io maven-2 jar
我正在尝试构建一个将资源文件构建到jar中的应用程序,但我希望项目可以在eclipse中运行.我的项目有一个基本的maven 2结构,我不确定如何读取文件,以便在从JAR运行或从eclipse运行时找到并使用它.思想?
结构体:
src/main/java
src/main/resources/file.txt
Run Code Online (Sandbox Code Playgroud)
目前的阅读方法:
getClass().getResourceAsStream("/file.txt")
Run Code Online (Sandbox Code Playgroud)
是否有读取方法将获取src/main/resources/*,以及JAR的根级别(部署资源的位置)?
我不明白你的问题.资源src/main/resources
自动被复制到target/classes
,并因此可以在Maven和Eclipse下的类路径上相对于同一位置的根级别(除非您的Eclipse项目未正确配置).
当打包在JAR中时,内容将target/classes
"按原样"打包,因此不会更改任何内容.
换句话说,访问你的file.txt
喜欢这是完全正常的(这实际上是记录的事情):
// Retrieve resource
InputStream is = getClass().getResourceAsStream( "/file.txt" );
// Do something with the resource
...
Run Code Online (Sandbox Code Playgroud)
如果您在某处遇到问题,请澄清.
更新:我使用maven-eclipse-plugin进行了快速测试,我无法重现您的问题:
$ mvn archetype:generate -DgroupId=com.stackoverflow -DartifactId=q2467362 -Dversion=1.0-SNAPSHOT
...
$ cd q2467362
$ mkdir -p src/main/resources
$ mvn eclipse:eclipse
...
$ cat .classpath
<classpath>
<classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/>
<classpathentry kind="src" path="src/main/java" including="**/*.java"/>
<classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
</classpath>
Run Code Online (Sandbox Code Playgroud)
该目录src/main/resources
按预期添加为源文件夹.你能展示你的POM(特别是resources
你定义的那个元素)吗?
归档时间: |
|
查看次数: |
19108 次 |
最近记录: |