java classpath 详解

项目遇到问题:配置文件未被加载
知识点:

  • 关于IDEA中classpath详解:
在最上面一栏可以看到这里是Source标签中的详细信息,在右边可以
看到项目里面目录的类型,有Source Folders、Resource Folders等
等,这里指的是Source Folders表示的都是代码源文件目录,生成的
class文件会输出到target->classess文件夹中,但是里面的源文件不会
复制到target->classes文件夹中,Test Source Folders表示的都是测试
代码源文件目录,生成的class文件同样会输出到target->classess文件
夹中,并且里面的源文件不会复制到target->classes文件夹中,而
Recource Folders表示的都是资源文件目录,这些目录里面的文件会在
代码编译运行被直接复制到target->classess文件夹中。可以这么讲,
target->classes即为classpath,任何我们需要在classpath前缀中获取
的资源都必须在target->classes文件夹中找到,否则将出现
java.io.FileNotFoundException的错误信息。

参考:
http://blog.csdn.net/skyebefreeman/article/details/56495637

  • Class.getResourceAsStream()与ClassLoader.getResourceAsStream()的区别
    相同:都是加载资源文件
    不同:
Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致。

     例如你写了一个MyTest类在包com.test.mycode 下,那么MyTest.class.getResourceAsStream("name") 会在com.test.mycode包下查找相应的资源。

     如果这个name是以 '/' 开头的,那么就会从classpath的根路径下开始查找。

  
 ClassLoader.getResourceAsStream()  无论要查找的资源前面是否带'/' 都会从classpath的根路径下查找。

    所以: MyTest.getClassLoader().getResourceAsStream("name") 和

            MyTest.getClassLoader().getResourceAsStream("name") 的效果是一样的。

参考:https://www.cnblogs.com/jr1260/p/6473837.html

你可能感兴趣的:(java classpath 详解)