返回类路径内容,一般为:lib1.jar;lib2.jar。
System.getProperty("java.class.path");
在命令行运行Java程序时,上面的代码将会返回"-cp"参数内容,例如,执行下面的命令返回".;test.jar":
java -cp .;test.jar Test
File f = new File(Test.class.getProtectionDomain().getCodeSource().getLocation().getPath());
//Jar包绝对路径
System.out.println(f.getAbsolutePath());
//Jar包所在目录
System.out.println(f.getParent());
需要注意的是,如果在java命令后添加如下参数启动安全管理器,并且安全策略文件中没有getProtectionDomain权限,则上述代码会抛出SecurityException 异常。
java -Djava.security.manager -Djava.security.policy=="安全策略文件绝对路径"
1)相对路径访问
public class Test {
public static void main(String[] args) throws Exception {
InputStream is1 = Test.class.getResourceAsStream("test.txt");
InputStream is2 = Test.class.getResource("test.txt").openStream();
}
}
如果待读取资源文件在当前类的package下,则可以使用相对路径定位资源文件。上面的例子中,test.txt文件和Test类同处在test package下面,相对路径为test.txt。
2) 绝对路径访问
public class Test {
public static void main(String[] args) throws Exception {
InputStream is1 = Test.class.getResourceAsStream("/resource/test.txt");
InputStream is2 = Test.class.getResource("/resource/test.txt").openStream();
}
}
如果待读取资源文件和当前类不在同一个package下,则可以使用绝对路径定位资源文件。上面的例子中, test.txt资源文件处在resource package下面,绝对路径为/resource/test.txt。
InputStream is = new URL("jar:file:/C:/test.jar!/test/test.txt").openStream();