1,默认eclipse有自己的classpath的路径并不是环境变量中配置的classpah.

2,eclipse的classpath每个项目不同,一般是在工作区的当前项目的class下。

2.1,可以通过下面代码查看:

 System.out.println(System.getProperty("java.class.path"));  

2.2也可以通过eclipse菜单查看:

Run→Run Configures...在classpath选项卡下就会发现,Eclipse默认是没有导入系统的CLASSPATH路径的

3,可以通过eclipse添加自己指定的classpath路径:

1,在工程上右击→Properties-java build path,在Libraries选项卡下,Add External Class Folder...,选择自己需要导入的类文件夹
2,完成之后你会在工程下面看到Referenced Libraries

4,修改classpah的几种方式:

,当然就是直接在环境变量设置
,在dos中使用set classpath=路径
3,在dos使用java -cp 路径
(cp是classpath的缩写,dos环境设置的只是临时的,窗口关闭也就失效了)
,在代码中设置System.setProperty(“java.library.path”,“classpath路径”)

但是在代码修改有个问题:

那就是classpath对应的是系统类加载器(AppClassLoader),那就是在代码运行前系统类加载器已经实例化,也就是classpaht已经被确定了。
那么指定的路径可能并不会起作用,路径下的类会出现找不到的异常。

虽然修改了classpath的值,但是类加载器已经启动了,再修改其classpath的值已经对那个已经启动的类加载器或者说是jvm不起作用了。

使用java代码动态修改classpath

google关键词:“setting the classpath at runtime” 在此我贴出一些解释
)The classloader represents (part of) a namespace, and two otherwise identical classes loaded by different classloaders are not “equal”. Which means there are a few dangers lurking in classloading, notably singletons suddenly not being so single anymore as well as casts failing unexpectedly.
)Classloaders (should) work on a pattern of delegating to the “parent” loader before attempting anything themselves (see above).
)Class loading and linking are two distinct steps (even though example implementations of a classloader such as may be found in blog posts/online Java articles, will combine the two into one for simplicity) Therefore you should not assume that if a parent loader has loaded a class it has also loaded all dependencies …
)All this means there is a problem if class A loaded by loader A references a class B which neither loader A nor any of its parents can load: class A may load just fine in loader A but at the point of use it fails because loader A cannot fully resolve (link) it.
)And you should make sure that your classloader loads classes in a synchronized manner otherwise the issues hinted at in step # can leap from duplicates due to classloaders to duplicates from multiple threads using the same classloader as well…

eclipse的classpath(build path)和classpaht几种设置的方式的更多相关文章

  1. 大杂烩 Classpath / Build path / Debug关联源码 / JDK&JRE区别

    Classpath的理解及其使用方式 原文地址:http://blog.csdn.net/wk1134314305/article/details/77940147?from=bdhd_site 摘要 ...

  2. eclipse中Build Path-Add to Build Path相应到androidstudio的设置

    有些时候并不须要加入lib库进行编译,比如在使用xposed的jar包时,仅仅须要在eclipse里Build Path-Add to Build Path就可以,假设作为lib库加入进去反而会出现异 ...

  3. Eclipse中Java build path的使用

    1.Eclipse中,工程属性的Java Build Path的Library标签页下,有如下几个按钮:Add Jars...添加JAR包,是指本Eclipse当前包含的工程中的,在工程列表下选取即可 ...

  4. Eclipse下Java Build Path下Libraies中添加 Maven dependencies 失败解决方案

    当maven 仓库有jar时,tomcat生成时总是报javaclassno..........无这个文件:用一下方法 转载:http://bugyun.iteye.com/blog/2311848 ...

  5. eclipse 右键没有Build Path

    如果Project Explorer右键没有build pathWindow ->show view 选择package explorer 参考https://blog.csdn.net/cod ...

  6. eclipse 工程没有build path

    项目的.project文件添加: <buildSpec><buildCommand><name>org.eclipse.jdt.core.javabuilder&l ...

  7. eclipse中java build path下 allow output folders for source folders 无法勾选,该如何解决 eclipse中java build path下 allow output folders for source folders 无法勾选,

    在创建maven工程时,在设置output folders时,总是勾选以后,老是自动恢复到原来的状态,对比其他的maven的工程发现是在创建maven时候选择的项目为pom,而不是war或者jar,将 ...

  8. Eclipse中的build path详解

    http://blog.csdn.net/qqqqqq654/article/details/53043742

  9. java环境配置classpath和path变量的作用及设置方法

    1.path:指定cmd中命令执行文件所在的路径.比如javac.java两个可执行文件在jdk的bin目录下,如果path值含有这个bin目录,在cmd下执行这两个命令的时候就会到path指定的目录 ...

随机推荐

  1. api.besttool.cn 相关接口的返回码code含义列表

    code 含义 0 请求成功 100 接口不存在 101 appid错误 102 secret错误 103 参数错误                    

  2. mybatis调用存储过程获得取返回值

    总体思路:map传值 controller: Map<String,Object> m=new HashMap<String,Object>(); m.put("na ...

  3. [Selenium] 最大化或自定义浏览器的大小

      driver.manage().window().maximize(); //将浏览器设置为最大化的状态   driver.manage().window().setSize(new Dimens ...

  4. Java程序设计17——多线程-Part-B

    5 改变线程优先级 每个线程执行都具有一定的优先级,优先级高的线程获得较多的执行机会,而优先级低的线程则获得较少的执行机会. 每个线程默认的优先级都与创建它的父线程具有相同的优先级,在默认情况下,ma ...

  5. Error generating final archive: Unable to get debug signature key

    在调试程序时,发生下面的错误: Error generating final archive: Unable to get debug signature key 解决办法: 删除下面的文件: C:\ ...

  6. Python 关于数组矩阵变换函数numpy.nonzero(),numpy.multiply()用法

    1.numpy.nonzero(condition),返回参数condition(为数组或者矩阵)中非0元素的索引所形成的ndarray数组,同时也可以返回condition中布尔值为True的值索引 ...

  7. 八种主流NoSQL数据库系统对比(转)

    出处:http://database.51cto.com/art/201109/293029.htm 虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只是时间问题:被迫 ...

  8. [GO]conext的使用

    package main import ( "context" "time" "net/http" "fmt" &quo ...

  9. linux计划任务(二)

    计划任务的授权 1.at任务 /etc/at.allow /etc/at.deny 2.crontab任务 /etc/cron.allow /etc/cron.deny [注:如果allow文件存在, ...

  10. 自定义View--滚动View

    实现这么一个效果,一个布局中有一个View,那个View会随着我们手指的拖动而滑动,这种效果该如何实现?   我们第一反应应该是自定义一个DragView类继承View,然后重写onTouchEven ...