eclipse的classpath(build path)和classpaht几种设置的方式
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不起作用了。
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几种设置的方式的更多相关文章
- 大杂烩 Classpath / Build path / Debug关联源码 / JDK&JRE区别
Classpath的理解及其使用方式 原文地址:http://blog.csdn.net/wk1134314305/article/details/77940147?from=bdhd_site 摘要 ...
- eclipse中Build Path-Add to Build Path相应到androidstudio的设置
有些时候并不须要加入lib库进行编译,比如在使用xposed的jar包时,仅仅须要在eclipse里Build Path-Add to Build Path就可以,假设作为lib库加入进去反而会出现异 ...
- Eclipse中Java build path的使用
1.Eclipse中,工程属性的Java Build Path的Library标签页下,有如下几个按钮:Add Jars...添加JAR包,是指本Eclipse当前包含的工程中的,在工程列表下选取即可 ...
- Eclipse下Java Build Path下Libraies中添加 Maven dependencies 失败解决方案
当maven 仓库有jar时,tomcat生成时总是报javaclassno..........无这个文件:用一下方法 转载:http://bugyun.iteye.com/blog/2311848 ...
- eclipse 右键没有Build Path
如果Project Explorer右键没有build pathWindow ->show view 选择package explorer 参考https://blog.csdn.net/cod ...
- eclipse 工程没有build path
项目的.project文件添加: <buildSpec><buildCommand><name>org.eclipse.jdt.core.javabuilder&l ...
- 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,将 ...
- Eclipse中的build path详解
http://blog.csdn.net/qqqqqq654/article/details/53043742
- java环境配置classpath和path变量的作用及设置方法
1.path:指定cmd中命令执行文件所在的路径.比如javac.java两个可执行文件在jdk的bin目录下,如果path值含有这个bin目录,在cmd下执行这两个命令的时候就会到path指定的目录 ...
随机推荐
- maven下拉项目不能同步
maven下拉项目不能同步,如下图: 解决方法: 对项目右键,team, 选择这里 我选择第一项,有的需要根据情况选择第二项,如果点击完成后,还是不能同步代码,对项目右键,team,disconnec ...
- was not registered for synchronization because synchronization is not active
报SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7862f70e] was not registered for s ...
- golang之切片
1.切片:切片是数组的一个引用,因此切片是引用类型 2.切片的长度可以改变,因此,切片是个可变的数组. 3.切片遍历方式和数组一样,可以用len()求长度 4.cap可以求出slice最大的容量,0& ...
- Alpha阶段测试报告(示例)
http://www.cnblogs.com/Flamenco/p/7834393.html Alpha阶段测试报告
- oracle 11g 创建普通用户
CREATE USER xiaoming IDENTIFIED by xm123123 GRANT CREATE SESSION TO xiaoming; GRANT RESOURCE TO xiao ...
- 深入浅出python系列(一)包与模块
一.包 包是由一系列模块组成的,模块简单就说是一个.py文件.比如说,现在有一个数学功能组,可以计算加.减.乘.除.幂运算等等,假定把这几个功能分成几个模块,一个模块就是一个.py文件.由这些不同的模 ...
- 让UITableView的Cell都变成静态的
UITableView给我们提供了一个非常不错的展示列表的工具.内置了复用机制,其中的Cell按照一般的写法就可以实现服用,不用在Cell滚动的时候每次都创建一个新的.实现了非常好的用户体验.但是,有 ...
- swift 创建UICollectionView
// // CollectionViewController.swift // tab // // Created by su on 15/12/8. // Copyright © 2015年 ...
- 检查路径是否存在与创建指定路径(mfc)
检查路径是否存在 if (access("D:\\Work\\Encryption\\DES", 0)) 为真,则路径不存在 创建指定路径 system("md D:\\ ...
- Linux 基础教程 43-su和sudo命令
在使用Linux系统中,有时候还需要做身份切换,这是为什么? 使用普通账号:系统日常操作的好习惯 虽然使用root对系统进行各种操作不受权限等方面的限制,但却存在重大的安全隐患,假如有人不 ...