Java 属性文件无法从使用Maven构建的Jar访问,但在eclipse中工作正常?

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> <

我知道人们已经问过类似的问题,但我尝试了其他帖子中给出的所有建议,但没有成功。因此,我提出以下问题:

我有一个maven项目,配置如下:

<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");