java中类加载路径和项目根路径获取的几种方式

public class MyUrlDemo {
 
	
	public static void main(String[] args) {
		MyUrlDemo muDemo = new MyUrlDemo();
		try {
			muDemo.showURL();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void showURL() throws IOException {
		
		// 第一种:获取类加载的根路径   D:\git\daotie\daotie\target\classes
		File f = new File(this.getClass().getResource("/").getPath());
		System.out.println(f);
 
		// 获取当前类的所在工程路径; 如果不加“/”  获取当前类的加载目录  D:\git\daotie\daotie\target\classes\my
		File f2 = new File(this.getClass().getResource("").getPath());
		System.out.println(f2);
 
		// 第二种:获取项目路径    D:\git\daotie\daotie
		File directory = new File("");// 参数为空
		String courseFile = directory.getCanonicalPath();
		System.out.println(courseFile);
		
 
		// 第三种:  file:/D:/git/daotie/daotie/target/classes/
		URL xmlpath = this.getClass().getClassLoader().getResource("");
		System.out.println(xmlpath);
	
 
		// 第四种: D:\git\daotie\daotie
		System.out.println(System.getProperty("user.dir"));
		/*
		 * 结果: C:\Documents and Settings\Administrator\workspace\projectName
		 * 获取当前工程路径
		 */
 
		// 第五种:  获取所有的类路径 包括jar包的路径
		System.out.println(System.getProperty("java.class.path"));
		
	}
}

解释哈

FileTest这个类在com.test包下

1.FileTest.class.getResource("")
  得到的是当前类FileTest.class文件所在目录地址。不包括自己!
  如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/com/test/
2.FileTest.class.getResource("/")
  加了个/,得到的是当前的classpath的绝对URI路径。
  如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/
3.Thread.currentThread().getContextClassLoader().getResource("")
  得到的也是当前ClassPath的绝对URI路径。
  如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/
4.FileTest.class.getClassLoader().getResource("")
  得到的也是当前ClassPath的绝对URI路径。
  如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/
5.ClassLoader.getSystemResource("")
  得到的也是当前ClassPath的绝对URI路径。
  如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/
  推荐使用**Thread.currentThread().getContextClassLoader().getResource("")**来得到当前的classpath的绝对路径的URI表示法。

在Web应用程序中,也就是在servlet中,我们一般通过ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。 也是和上面一样的作用,他获取的就是web容器中放置编译后的类的文件夹路径,WEB-INF目录下的classes目录

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值