簡體   English   中英

可執行jar無法找到打包的資源

[英]Executable jar can't locate packaged resources

我有以下代碼從資源中讀取文件:

randomFirstName = rReader.generate(
new FileReader(classLoader.getResource("NamesFem.txt").getFile()));

當我從IDEA運行它時,它工作正常。

我需要使用maven將項目放入可執行jar。 那是我的程序集插件的pom.xml配置:

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                    <configuration>
                        <archive>
                            <manifest>
                                <mainClass>com.myPackage.CreateXlsFile</mainClass>
                            </manifest>
                        </archive>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                    </configuration>
                </execution>
            </executions>
        </plugin>

當我嘗試運行打包jar時,出現以下異常: Exception in thread "main" java.io.FileNotFoundException: file:/Users/myUser/MyProject/target/my-project-1.0-SNAPSHOT-jar-with-dependencies.jar!/NamesFem.txt (No such file or directory)

當我手動解壓縮jar時,所有文件都位於jar的根目錄中:

在此處輸入圖片說明

怎么了?

我猜問題是URL.getFile方法對JAR文件內容不起作用。 嘗試從JAR文件中明確讀取內容時,我總是改用ClassLoader.getResourceAsStream 就像是:

randomFirstName = rReader.generate(
    new InputStreamReader(
      classLoader.getResourceAsStream("NamesFem.txt")
    )
);

無論NamesFem.txt是在您的JAR文件中還是在類路徑中作為單獨的文件(即在IDE環境中),這都應該起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM