이 질문은 여러 번 전에 물어 보았지만 여전히 작동하지는 않습니다. 내가 달성하고 싶은 것은 이클립스에서 애플리케이션을 실행하는 동안 리소스 로딩을 중개하지 않고 런타임에 리소스 (jar로 묶음)를로드 할 jar를 생성하는 것이다.Eclipse 및 Maven - jar의 리소스
내 프로젝트 구조는 표준 :로드 이미지 리소스에 대한
src/main/java
src/main/resources
src/test/java
src/test/resources
코드 : 그것은 잘 작동
ClassLoader classLoader = getClass().getClassLoader();
splashImage = ImageIO.read(new File(classLoader.getResource("img/splash.png").getFile()));
이클립스에서 앱을 시작. 그러나 Eclipse에서 실행 가능한 jar를 내보낼 때 작동하지 않습니다.
jar의 루트 디렉토리에/resources/img 폴더가 있습니다. 응용 프로그램이 시작될 때, 예외가 발생합니다 : 그것은 가능한 방법
Caused by: javax.imageio.IIOException: Can't read input file!
이클립스에서 앱을 실행할 때이 실행 가능한 jar 파일에서 작업하고 만들어?
나는 또한 메이븐 플러그인으로 항아리를 만들려고했으나 운이 없었다.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>foo.bar.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
일반적으로 resources 디렉토리의 파일은 resources라는 폴더가 아닌 classpath의 루트에 있어야한다고 생각했습니다. jar 파일을 어떻게 만들고 있습니까? – thatidiotguy
두 가지 방법으로 : eclipse에서 runnable jar를 내보내고 mvn install에서 설치하십시오. 그들 중 누구도 일하지 않고있다. – MGorgon
글쎄, 문제는 당신의'img' 폴더가 resources 폴더 아래에 있다는 것이다. 그것은 당신이 제공 한 코드를 classpath 맨 위에 위치해야합니다. – thatidiotguy