classpath 订阅
Classpath设置的目的,在于告诉Java执行环境,在哪些目录下可以找到您所要执行的Java程序所需要的类或者包。 展开全文
Classpath设置的目的,在于告诉Java执行环境,在哪些目录下可以找到您所要执行的Java程序所需要的类或者包。
信息
外文名
Classpath
设置方法
在系统变量中新增Classpath变量
用    途
告诉Java执行环境
中文名
类路径
CLASSPATH简介
设置Classpath的目的,在于告诉Java执行环境,在哪些目录下可以找到您所要执行的Java程序所需要的类或者包。
收起全文
精华内容
下载资源
问答
  • CLASSPATH

    2014-05-03 21:41:57
    CLASSPATH

    CLASSPATH

    classpath是个变量,可以在command-line 或者 environment-variable 中设置,用来告诉 JVM 或者 java compiler 去哪里寻找 user-definded class 或者 package 。


    jvm寻找和加载类的顺序是:

    1,bootstrap classes。 Java Platform 所必需的类。

    2,extension classes。在JRE或者JDK extension 目录下的类。比如 jre/lib/ext.

    3,user-defined package and libraries。

    前2种类,不需要指定,user-defined 需要通过classpath指定。


    假设现在有类 HelloWorld 在包 org.mypackage 下,而 org.mypackage 在目录 D:\myprogram 下。

    通过commond-line指定classpath

    java -classpath D:\myprogram org.mypackage.HelloWorld

    通过environment指定classpath

    set CLASSPATH=D:\myprogram
    java org.mypackage.HelloWorld

    通过-classpath会覆盖CLASSPATH。


    当有Jar 包时

    java -classpath D:\myprogram;D:\myprogram\lib\supportLib.jar org.mypackage.HelloWorld

    set CLASSPATH=D:\myprogram;D:\myprogram\lib\supportLib.jar
    java org.mypackage.HelloWorld

    see more detail here 










    展开全文
  • classpath

    2014-08-18 14:11:40
    classpath是你的程序运行时所要引用的包的路径,所以如果你的程序中要用到一些特定的包,你就要把这些包放入classpath中,当然,并不是说只要你import了,你就一定要在classpath中明确的包括这些包,这还与你装的jdk...

    classpath是你的程序运行时所要引用的包的路径,所以如果你的程序中要用到一些特定的包,你就要把这些包放入classpath中,当然,并不是说只要你import了,你就一定要在classpath中明确的包括这些包,这还与你装的jdk有关。

    至于CLASSPATH,那是JDK的一个参数。你可以到JDK的bin目录下去,输入java和javac,可以看到,这两个程序都有-CLASSPATH参数。什么意思呢?就是告诉java(或者javac):可能有些文件不是在JDK的默认路径下,你要到另外的地方去找。它跟package、import都没关系。package、import指的是名字空间,CLASSPATH指的是文件路径。

    最后,关于CLASSPATH的设置:你可以在windows命令行下用set命令去设置:

    set CLASSPATH = "c:\jdk\"

    也可以在运行java(或者javac)的时候动态设置:

    java -CLASSPATH="c:\myprogram\" a.class

    展开全文
  • classpathclasspath*区别

    2020-06-26 01:44:00
    classpathclasspath*区别: classpath:只会到你的class路径中查找找文件。 classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。 注意:用classpath*:需要遍历所有的classpath,所以加载速度...

    classpath和classpath*区别: 

    classpath:只会到你的class路径中查找找文件。

    classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。

    注意: 用classpath*:需要遍历所有的classpath,所以加载速度是很慢的;因此,在规划的时候,应该尽可能规划好资源文件所在的路径,尽量避免使用classpath*。

    classpath*的使用:

    当项目中有多个classpath路径,并同时加载多个classpath路径下(此种情况多数不会遇到)的文件,*就发挥了作用,如果不加*,则表示仅仅加载第一个classpath路径。

    展开全文
  • Spring加载resource时classpath*:与classpath:的区别

    万次阅读 多人点赞 2010-04-20 17:16:00
    Spring可以通过指定classpath*:与classpath:前缀加路径的方式从classpath加载文件,如bean的定义文件.classpath*:的出现是为了从多个jar文件中加载相同的文件.classpath:只能加载找到的第一个文件. 比如 resource1....

    Spring可以通过指定classpath*:与classpath:前缀加路径的方式从classpath加载文件,如bean的定义文件.classpath*:的出现是为了从多个jar文件中加载相同的文件.classpath:只能加载找到的第一个文件.

    比如 resource1.jar中的package 'com.test.rs' 有一个 'jarAppcontext.xml' 文件,内容如下:

    <bean name="ProcessorImplA" class="com.test.spring.di.ProcessorImplA" />

    resource2.jar中的package 'com.test.rs' 也有一个 'jarAppcontext.xml' 文件,内容如下:

    <bean id="ProcessorImplB" class="com.test.spring.di.ProcessorImplB" />

    通过使用下面的代码则可以将两个jar包中的文件都加载进来

    ApplicationContext ctx = new ClassPathXmlApplicationContext( "classpath*:com/test/rs/jarAppcontext.xml");

    而如果写成下面的代码,就只能找到其中的一个xml文件(顺序取决于jar包的加载顺序)

    ApplicationContext ctx = new ClassPathXmlApplicationContext( "classpath:com/test/rs/jarAppcontext.xml");

    classpath*:的使用是为了多个component(最终发布成不同的jar包)并行开发,各自的bean定义文件按照一定的规则:package+filename,而使用这些component的调用者可以把这些文件都加载进来.

    classpath*:的加载使用了classloader的 getResources() 方法,如果是在不同的J2EE服务器上运行,由于应用服务器提供自己的classloader实现,它们在处理jar文件时的行为也许会有所不同。 要测试classpath*: 是否有效,可以用classloader从classpath中的jar文件里加载文件来进行测试:getClass().getClassLoader().getResources("<someFileInsideTheJar>")。(上面的例子是在sun的jre中运行的状态)

     从Spring的源码,在PathMatchingResourcePatternResolver类中,我们可以更清楚的了解其对的处理:如果是以classpath*开头,它会遍历classpath.

        protected Resource[] findAllClassPathResources(String location) throws IOException {
            String path = location;
            if (path.startsWith("/")) {
                path = path.substring(1);
            }
            Enumeration resourceUrls = getClassLoader().getResources(path);
            Set<Resource> result = new LinkedHashSet<Resource>(16);
            while (resourceUrls.hasMoreElements()) {
                URL url = (URL) resourceUrls.nextElement();
                result.add(convertClassLoaderURL(url));
            }
            return result.toArray(new Resource[result.size()]);
        }
    http://blog.csdn.net/kkdelta/article/details/5560210,简介了在JAVA里遍历classpath中读取找到的所有符合名称的文件.

    另外在加载resource的时候,其他前缀的意义如下表所示:注意classpath*只能用与指定配置文件的路径,不能用在用于getResource的参数.如appContext.getResource("classpath*:conf/bfactoryCtx.xml")会异常的.

    前缀例子说明

    classpath:

    classpath:com/myapp/config.xml

    从classpath中加载。

    file:

    file:/data/config.xml

    作为 URL 从文件系统中加载。

    http:

    http://myserver/logo.png

    作为 URL 加载。

    (none)

    /data/config.xml

    根据 ApplicationContext 进行判断。

    从Spring的源码可以看出原因:如果是classpath:开头,从classpath加载,否则尝试URL,如果失败,调用 getResourceByPath
    public Resource getResource(String location) {
            Assert.notNull(location, "Location must not be null");
            if (location.startsWith(CLASSPATH_URL_PREFIX)) {
                return new ClassPathResource(location.substring(CLASSPATH_URL_PREFIX.length()), getClassLoader());
            }
            else {
                try {
                    // Try to parse the location as a URL...
                    URL url = new URL(location);
                    return new UrlResource(url);
                }
                catch (MalformedURLException ex) {
                    // No URL -> resolve as resource path.
                    return getResourceByPath(location);
                }
            }
        }

    getResourceByPath会被不同ApplicationContext 实现覆盖.

    如 GenericWebApplicationContext覆盖为如下:

    protected Resource getResourceByPath(String path) {
            return new ServletContextResource(this.servletContext, path);
        }
    
    如 FileSystemXmlApplicationContext覆盖为如下:
    
    protected Resource getResourceByPath(String path) {
            if (path != null && path.startsWith("/")) {
                path = path.substring(1);
            }
            return new FileSystemResource(path);
        }
    最终从文件加载的时候仍然是JAVA中常见的读取文件的方法:

    如ClassPathResource得到inputstream的方法是利用class loader.

        public InputStream getInputStream() throws IOException {
            InputStream is;
            if (this.clazz != null) {
                is = this.clazz.getResourceAsStream(this.path);
            }
    如FileSystemResource得到inputstream的方法是利用FileInputStream.

        public InputStream getInputStream() throws IOException {
            return new FileInputStream(this.file);
        }

    如ServletContextResource得到inputstream的方法是利用servletContext.getResourceAsStream.

        public InputStream getInputStream() throws IOException {
            InputStream is = this.servletContext.getResourceAsStream(this.path);
            if (is == null) {
                throw new FileNotFoundException("Could not open " + getDescription());
            }
            return is;
        }
    注意:
    用classpath*:需要遍历所有的classpath,所以加载效率会比较差一些,如果只使用classpath:,需要规划好资源文件的路径,尽量避免重名,导致资源文件加载不到的问题。

    展开全文
  • classpath是指 WEB-INF文件夹下的classes目录classpathclasspath* 区别: classpath:只会到你的class路径中查找找文件; classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找. classpath*:的...
  • classpathclasspath* 区别: classpath:只会到你指定的class路径中查找找文件; classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找. 举个简单的例子,在我的web.xml中是这么定义的:...
  • path是给操作系统用的,用来指定可执行文件的位置。 classpath是给编译工具javac用的,用来指定class文件的位置。 classpath*能加载所有同名的文件,classpath只能加载其中一个,...classpath*:与classpath:的区别
  • 关于classpath: classpath*,

    千次阅读 2018-11-01 19:34:42
    然后classpath:resources即可,或者是针对如果和src和config一个路径下, 现在   如果是针对src 下面 2 IDEA maven 下面 src/main/java src/main/resources classpath 就是针对src/main/java或者是sr.....
  • classpathclasspath* 区别: classpath:用于加载类路径(包括jar包)中的一个且仅一个资源,对于有多个匹配的也只返回一个 classpath*:用于加载类路径(包括jar包)中的所有匹配的资源,所以如果需要多个...
  • 转载于https://blog.csdn.net/u011095110/article/details/76152952一、classpath路径指什么 只知道把配置文件如:mybatis.xml、spring-web.xml、...然后使用“classpath:xxx.xml”来读取,都放到src目...
  • classPath: src路径下的文件在编译后会放到WEB-INF/classes路径下吧。默认的classpath是在这里。直接放到WEB-INF下的话,是不在classpath下的。用ClassPathXmlApplicationContext当然获取不到。 如果单元测试的话...
  • java项目里classpath具体指哪儿个路径

    万次阅读 多人点赞 2017-07-26 17:08:45
    一、classpath路径指什么  只知道把配置文件如:mybatis.xml、spring-web.xml、applicationContext.xml等放到src目录(就是存放代码.java文件的目录),然后使用“classpath:xxx.xml”来读取,都放到src目录准没...
  • classpath:与classpath*:分析

    千次阅读 2017-08-02 17:48:54
    1.在spring中classpath:和classpath*:为前缀的文件加载过程: classpath:String CLASSPATH_URL_PREFIX = ResourceUtils.CLASSPATH_URL_PREFIX;/** Pseudo URL prefix for loading from the class path: "classpath:...
  • classpath加载的是当前class下的xml文件,比如配置了classpath:spring.xml,则只会在当前class下加载spring.xml文件,如图: classpath*加载的是当前class下以及引用的jar包中相同路径的相同文件名的xml配置...
  • classpath 本质是jvm的跟路径,jvm获取资源都是从这个根目录下面查找的。 1. classpath: 只会到你的classes路径中查找文件。 2. classpath*: 不仅会到classes路径,还包括jar文件中的(classes路径)进行查找
  • classpath路径

    2017-02-18 22:32:26
    1、src不是classpath, WEB-INF/classes,lib才是classpath,WEB-INF/ 是资源目录, 客户端不能直接访问。2、WEB-INF/classes目录存放src目录Java文件编译之后的class文件,xml、properties等资源配置文件,这是一个...
  • classpath:只会到你的class路径中查找找文件; classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找. 列如: classpath:/spring-.xml classpath下所有目录下的指定前缀的文件 classpath:/spring-*....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,382
精华内容 26,552
关键字:

classpath