0
我在創建一個包含所有依賴關係和資源的可執行jar時遇到了麻煩。到目前爲止,我擁有罐子裏的所有東西,但它正在尋找罐子旁邊的資源。尋找罐外資源的Maven pom
這裏是我的項目的結構:
MyProject
----images
----resources
----src
----...
我能夠創建打包的依賴關係的可執行的JAR和資源打包爲好,但它仍然是尋找資源「資源」文件夾,而不是在JAR中。
罐子看起來是這樣的:
當我嘗試運行它,我得到這個錯誤:
java.io.FileNotFoundException: .../MyProject/target/resources/default-style.xml (No such file or directory)
所以我的問題是這樣的:我的依賴關係和資源打包在像我想要的jar,但一旦執行它正在尋找「資源/」在「目標/」文件夾中,而不是在JAR中。
這裏是我的POM:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- MyProject INFO -->
<groupId>Main</groupId>
<artifactId>MyProject</artifactId>
<version>0.0.1-beta</version>
<name>MyProject</name>
<packaging>jar</packaging>
<!-- DEPENDANCIES -->
<dependencies>
<dependency>
<groupId>custom</groupId>
<artifactId>custom</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>jgraphx</groupId>
<artifactId>jgraphx</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<!-- RESOURCES -->
<resources>
<resource>
<directory>src</directory>
<filtering>true</filtering>
</resource>
<resource>
<directory>${basedir}/images</directory>
<filtering>false</filtering>
<targetPath>images</targetPath>
</resource>
<resource>
<directory>${basedir}/resources</directory>
<filtering>false</filtering>
<targetPath>resources</targetPath>
</resource>
</resources>
<testResources>
<testResource>
<directory>src</directory>
</testResource>
</testResources>
<plugins>
<!-- For Java 6, you need to configure the maven-compiler-plugin. Add this to your pom.xml: -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<!-- CREATE EXECUTABLE JAR WITH DEPENDANCIES -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>Main.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
編輯:看起來它可能是我的代碼,而不是。我會看看,謝謝! (我公司的代理塊大部分是stackoverflow,所以我不能回覆評論> <這就是爲什麼我在這裏寫的。謝謝Jigar Joshi和Aurand!)
它是你的代碼是從特定的固定位置讀取文件,我認爲 –
聽起來像這個問題不是用maven,而是用你的代碼。請張貼引發異常的代碼行。 – Aurand
可能是,您正在嘗試讀取JAR內的文件,而不是使用'ClassLoader.getResourceAsStream',如果您想訪問JAR中可靠打包的資源,則必須執行此操作。 –