Java 属性文件无法从使用Maven构建的Jar访问,但在eclipse中工作正常?
我知道人们已经问过类似的问题,但我尝试了其他帖子中给出的所有建议,但没有成功。因此,我提出以下问题: 我有一个maven项目,配置如下:Java 属性文件无法从使用Maven构建的Jar访问,但在eclipse中工作正常?,java,command-prompt,executable-jar,maven-assembly-plugin,properties-file,Java,Command Prompt,Executable Jar,Maven Assembly Plugin,Properties File,我知道人们已经问过类似的问题,但我尝试了其他帖子中给出的所有建议,但没有成功。因此,我提出以下问题: 我有一个maven项目,配置如下: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.7</java.version> <
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.7</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<index>true</index>
<manifest>
<mainClass>com.test.tools.services.Sample</mainClass>
<addClasspath>true</addClasspath>
</manifest>
</archive>
<excludes>
<exclude>config.properties</exclude>
<exclude>logback.xml</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/main/assembly/windows.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
maven版本正在生成具有以下结构的zip文件:
target
|project.zip
|config
config.properties
|lib
main.jar
dependency.jar
windows.xml定义了以下内容:
<formats>
<format>zip</format>
</formats>
<dependencySets>
<dependencySet>
<useProjectArtifact>true</useProjectArtifact>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>${basedir}/src/main/resources</directory>
<outputDirectory>config</outputDirectory>
</fileSet>
</fileSets>
当我在eclipse中运行上面的代码时,它工作得很好,但当我在命令提示符下运行它时,我得到了一个文件NotFoundException
请提供任何指针/解决方案
提前谢谢。
`只需尝试
Reader configReader=new InputStreamReader(getClass().getResourceAsStream(“/config.properties”)代码>您在这里做了一些非常错误的事情,即在JAR内外都有一个属性文件。外面的一个将被完全忽略,并将愚弄每个人认为它是有用的。除此之外,上面的评论将解决你的问题。谢谢你的回答,是的,你是对的,我不希望我的属性文件在jar中,我已经通过添加标签删除了它。现在,我在jar外部和config文件夹内部有一个属性文件,位于同一级别的文件夹“lib”中。已尝试的Reader configReader=new InputStreamReader(getClass().getResourceAsStream(“/config.properties”);但是访问jar外部的属性文件是不起作用的。你也能提供这个选项吗?如果您能简单地解释一下它是如何查找文件路径的,那就太好了。感谢您得到了什么错误消息?它给出了空指针异常,基本上它没有得到config.properties。
<formats>
<format>zip</format>
</formats>
<dependencySets>
<dependencySet>
<useProjectArtifact>true</useProjectArtifact>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>${basedir}/src/main/resources</directory>
<outputDirectory>config</outputDirectory>
</fileSet>
</fileSets>
InputStream input = Utility.class.getClassLoader().getResourceAsStream("config.properties");