Java路径问题

本文目录

1 绝对路径与相对路径

2 常见获取路径方法

3 JAR文件内部路径

4 打包JAR文件

 

1 绝对路径与相对路径

绝对路径:通常从盘符开始的路径(例如:G:/Eclipse/Model)。任何程序通过绝对路径都会“到达”一个相同的位置。

相对路径:基于某个“根路径”开始的路径(例如:/Model)。对于不同的根路径,相对路径实际指向不同的位置。

 

当根路径为“G:/Eclipse”时,相对路径“/Model”指向的是“G:/Eclipse/Model”位置。

当根路径为“G:/Program”时,相对路径“/Model”指向的是“G:/Program/Model”位置。

 

若不指定根路径,在项目中,默认以项目目录为根路径,在JAR文件中,默认以JAR文件所在位置为根路径。

 

当一个程序希望在任何地方都能正常运行时,该程序代码中一般会使用相对路径。

否则,若使用绝对路径,在不同计算机中,可能会出错。

例如,某计算机没有“G:/Program”路径,那么,所有指向“G:/Program/Model”的代码都会报错。

 

2 常见获取路径方法

1 Class.getResource(path)

该方法以Class编译文件所在位置作为根路径,并结合给定的相对路径参数(path),得到一个完整路径。

 

示例:Model.class.getResource("logo.png")

编译文件Model.class路径为“G:/Eclipse/Model/bin/com/model/code/”,

得到的完整路径为“G:/Eclipse/Model/bin/com/model/code/logo.png”。

 

2 Class.getClassLoader().getResource(path)

该方法以bin目录所在位置作为根路径,并结合给定的相对路径参数(path),得到一个完整路径。

 

示例:Model.class.getClassLoader().getResource("logo.png")

bin目录路径为“G:/Eclipse/Model/bin/”,得到的完整路径为“G:/Eclipse/Model/bin/logo.png”。

 

3 JAR文件内部路径

当项目被打包成JAR文件后,bin目录内容将被包含在其中,路径也会稍微有些变化。

JAR文件内部目录结构,可以通过WinRAR解压缩工具进行查看。

 

1 Class.getResource(path)

该方法将以Class文件在JAR文件内部的位置作为根路径。

 

示例:Model.class.getResource("logo.png")

得到的完整路径为“rsrc:com/model/code/logo.png”

 

2 Class.getClassLoader().getResource(path)

该方法将以JAR文件内部的根目录作为根路径。

 

示例:Model.class.getClassLoader().getResource("logo.png")

得到的完整路径为“rsrc:logo.png”

 

4 打包JAR文件

打包JAR文件时,通常是将Class文件打包,即将bin目录下的内容进行打包。而bin目录下的内容,又是通过src目录下的内容生成的。因此,若希望将资源文件(如图片)打包到JAR文件中,并正确引用该资源文件,需要将资源文件放到src目录下,同时,通过Class.getResource或Class.getClassLoader().getResource方法进行引用,以确保不会出现打包JAR文件后,资源无法找到的问题。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值