获取JAVA文件路径

path

Windows操作系统根据path环境变量查找命令,若要使用JDK的工具命令,例如java、javac,必须将JDK工具命令所在目录配置在path变量中。
JDK安装路径下的bin目录,存放了JDK的各种工具命令。

%JAVA_HOME%\bin;
%JAVA_HOME%指JDK安装目录

classpath

classpath用于指定java运行时,jvm寻找class、jar文件的存储目录。只跟java运行有关,跟编译无关。

  • JDK1.5之后不用设置CLASSPATH环境变量,JRE会自动搜索当前路径下的类文件 ,而且使用java的编译和运行工具时,系统可以自动加载dt.jar和tool.jar文件中的java类,因此不再需要设置该环境变量
  • 当然1.5之后也可以设置CLASSPATH变量,一旦设置了该变量,JRE会按照指定的路径搜索java类,这意味着该环境变量中不包含(.),JRE不会从当前路径下搜索java类
.;%JAVA_HOME%\lib;
.指当前目录
多路径用分号隔开,Linux系统用:隔开

DOS命令运行java程序

编译java程序

命令:javac -d destdir srcFile

  • srcFile指java源文件所在的位置
  • -d destdir 是javac命令的选项,用以指定编译生成的字节码文件的存放路径
  • 只需指定目标文件存放路径,无需指定字节码文件的文件名,因为javac编译后生成的字节码文件有默然的文件名:以源文件所定义类的类名作为主文件名,以.class作为后缀名
  • 如果一个源文件定义了多个类,将编译生成多个字节码文件
  • -d 选项可省略,生成的字节码文件放在当前路径下

先进入HelloWord.java文件所在目录
这里写图片描述

运行class文件

命令:java java类名

  • java命令后的参数是java类名,而不是字节码文件的文件名,也不是java源文件名

先进入HelloWord.class文件所在目录
这里写图片描述

  • java -classpath dir1;dir2;dir3;…; java类名

如果运行java程序时z定了-classpath选项的值,JRE将严格按照-classpath指定的路径搜索java类,CLASSPATH环境变量指定的搜索路径不再有效,除非在-classpath选项的值中引用该变量。

例如:

java -classpath %CLASSPATH%;.;./lib/* HelloWord
  • %CLASSPATH%:先从CLASSPATH环境变量配置的路径下查找
  • “.”:从当前目录查找
  • “./lib/*”:当前目录中没有时,再从当前目录下的lib文件下的所有jar文件中查找,直到找到

eclipse等开发环境中,往往不去读操作系统配置的CLASSPATH,而是根据bulid config自动生成classpath

注意事项

  • class文件的查找方式:根据classpath配置的先后顺序依次查找,找到则停止。因此若后续路径中存在同名class文件,那么调整classpath路径配置顺序会导致程序运行结果的变化。
  • classpath的第一个路径非常重要!为该java程序运行的根路径。
  • classpath配置的目录中,如果存放jar文件,该文件里的class文件不会被读取,只读取以目录结构存放的class文件

getResource()

xxx.class.getResource(“”).getPath()获取xxx类所在路径,不包括xxx类的名称
xxx.class.getResource(“/”).getpath()获取java运行的根路径:classpath中配置的第一个目录
xxx.class.getClassLoader().getResource(“”).getPath()获取java运行的根路径,因为ClassLoader处于根路径
xxx.class.getClassLoader().getResource(“/”)错误写法!!!获取到null
System.getProperty(“user.dir”)java运行目录,可能与java根路径不同

获取文件的具体情况

src包下

这里写图片描述

xxx.class.getResource("/").getPath() + "source.xml";// 先获取根路径
xxx.class.getClassLoader().getResource("source.xml").getPath();// 先获取ClassLoader路径

src并列包下

这里写图片描述

System.getProperty("user.dir") + File.separator + "my file" + File.separator + "source.xml"// 先获取项目所在路径

类所在包下

这里写图片描述

xxx.class.getResource("").getPath()+"source.xml";// 先获取类所在目录

WebRoot目录

这里写图片描述

String path = xxx.class.getResource("/").getPath()
if(path.indexOf("WEB-INF") > 0){
    path = path.substring(0,path.indexOf("WEB-INF"));  
}
path = path+"css"+File.separator+"home.css";
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值