读取jar包内的资源主要有class和classloader的getResourceAsStream方法,工程结构如下:
package dong.sun;
import java.io.InputStream;
public class LoadFile {
public static void main(String[] args) {
InputStream is = getPerspectiveIcon();
if (is != null) {
System.out.println("Loading the File successfully");
}
}
public static InputStream getPerspectiveIcon() {
return LoadFile.class.getResourceAsStream("/ui/images/APP.png");
// return LoadFile.class.getClassLoader().getResourceAsStream("ui/images/APP.png"); //这两种方法都可以
}
}
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>
<groupId>test</groupId>
<artifactId>FileInJar</artifactId>
<version>1.0</version>
<name>FileInJar</name>
<description>FileInJar</description>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor> <!-- set to true will embed pom.xml into META-INF-->
<manifest>
<mainClass>dong.sun.LoadFile</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
ps:
这篇文章讲的比较全面http://hxraid.iteye.com/blog/483115