classpath分析

Posted alice-cj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了classpath分析相关的知识,希望对你有一定的参考价值。

1. 什么是classpath?

    classpath相当于Java执行环境,它指定了一些常用的包或jar的位置,方便我们对项目文件的使用,而不必重复多次写所需要文件的位置。
    在classpath中可能需要使用所有相同名字的资源文件,如果用classpath:只会加载第一个,而使用classpath*:前缀则能够加载所有符合类型的文件。然而,使用classpath*:需要遍历所有的classpath,加载速度很慢,因此您应该尽量避免使用classpath*。

 

2.eclipse中的classpath分析

    在eclipse下的Spring项目中,有一个.classpath文件,里面配置了整个项目的运行环境(如下图所示)。

    技术图片

 

代码解释:(转载于http://mingyundezuoan.iteye.com/blog/2224973)

    kind: 
        src:源文件的具体位置,对应java build path操作中source中的一项路径。
        con:运行的系统环境。
        lib:库文件或目录, path为库文件或目录位置。注意: 当指定库文件时(非库目录, 通常是jar包), 应当包             含文件名。
        output:指明为默认class输出路径, path为相应输出路径。注意: 这一条在文件中有且只能有一条。
        var:指定工程所用到的库文件或目录, 对应工程属性Java build path中Libraries项中的一项,指明带有全             局编译路径中设置的变量(Window->Prefrences->Java->Build Path->Classpath Variables),path为             这个变量目录下的库文件。

    path:源文件路径。
    output:为这条路径中源文件编译以后class文件的输出路径,对应java build path操作中source选项面板下方            default output path ,所指代的路径。

    including:额外包含其他目录下的所有java文件。
    excluding:不包含的文件。

 

3.intellij idea的classpath分析

    首先在打开的项目窗口打开File->Project Structure...,得到如下图所示的项目结构:

    技术图片

 

    在最上面一栏可以看到这里是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的错误信息。

    如果您在项目中想添加一些自己的目录到Source Folders、Resource Folders这样的目录分类里来实现编译过后正确地文件输出,则可以点击需要设置的文件夹,再在文件结构窗口上方的Make as:后面选择正确的目录类型即可。
---------------------
作者:SkyeBeFreeman
来源:CSDN
原文:https://blog.csdn.net/skyebefreeman/article/details/56495637













以上是关于classpath分析的主要内容,如果未能解决你的问题,请参考以下文章

classpath 和 classpath* 区别:

SpringBoot中classpath和classpath*

javac 怎么指定classpath

java 怎么获取classpath列表

classpath的作用

关于java中的classpath