모든 종속 파일과 리소스가 패키지로 포함 된 실행 가능 jar 파일을 만드는 데 문제가 있습니다. 지금까지 나는 항아리 안에 모든 것을 가지고 있지만 항아리 밖에있는 자원을 찾고 있습니다. 여기 Maven pom이 jar 파일 외부의 리소스를 찾고 있습니다.
는 내 프로젝트의 구조입니다 : 나는에 패키지 의존성과 실행 항아리를 만들 수 있어요MyProject
----images
----resources
----src
----...
및 자원 그러나 그것은 여전히 자원을 찾고있다,뿐만 아니라 포장된다 JAR 파일이 아닌 "resources"폴더.
항아리는 다음과 같습니다
이java.io.FileNotFoundException: .../MyProject/target/resources/default-style.xml (No such file or directory)
그래서 내 문제는 이것이다 : 나는 그것을 실행하려고하면
MyProject.jar
----images
----resources
----...
, 나는이 오류가 내 의존성과 자원이 포장됩니다 내가 원하는 것처럼 jar하지만 실행시 JAR이 아닌 "target /"폴더에서 "resources /"를 찾습니다.
<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!)
특정 고정 위치에서 파일을 읽는 코드입니다. –
문제는 위의 코드와 함께 문제가되지 않는다고 생각합니다. 예외를 던지는 코드 줄을 게시하십시오. – Aurand
JAR 내부에있는 파일을 읽고 JAR에 패키지 된 리소스에 안정적으로 액세스하려면 'ClassLoader.getResourceAsStream'을 사용하지 않는 것이 좋습니다. –