java getclassloader_Java中getClassLoader().getResource()和getResource()的区别

java getclassloader_Java中getClassLoader().getResource()和getResource()的区别在Java中需要加载一个文件时,使用getResource()方法进行加载,会报错[Causedby:java.lang.NullPointerException:Locationisrequired.这是对.getClass().getClassLoader().getResource()和.getClass().getResource()的理解不够深入的原因。经过查询相关资料后终于明…

大家好,又见面了,我是你们的朋友全栈君。

在Java中需要加载一个文件时,使用getResource()方法进行加载,会报错

[Caused by: java.lang.NullPointerException: Location is required.

这是对.getClass().getClassLoader().getResource()和.getClass().getResource()的理解不够深入的原因。

经过查询相关资料后终于明白,区别主要如下:

.getClass().getResource(fileName) :表示只会在当前调用类所在的同一路径下查找该fileName文件;

.getClass().getClassLoader().getResource(fileName):表示只会在根目录下(/)查找该文件;

fileName如果是前面加“/”,如”/fileName”,则表示绝对路径,取/目录下的该文件;

如果是前面没有加“/”,如”fileName”,则表示相对路径,取与调用类同一路径下的该文件。

如果路径中包含包名 ,getClass().getResource(“com/xxx/1.xml”);

包名的层级使用”/”隔开(正斜杠),而非“.”(半角句号)。

举例:

包com.aaa下有调用类A,需要引用配置文件1.xml:

1. 配置文件在包com.aaa下

getClass().getResource(“1.fxml”) ——成功

getClass().getResource(“/1.fxml”)——失败

getClass().getClassLoader().getResource(“1.fxml”)——失败

getClass().getClassLoader().getResource(“/1.fxml”)——失败

第2条失败,原因是使用了绝对路径,路径不正确(/目录下没有该文件)。应为:

getClass().getResource(“/com/aaa/1.fxml”)

(com前有”/”,表示绝对目录,从/目录开始)

第3条失败是因为相对路径不正确,应为:

getClass().getClassLoader().getResource(“com/aaa/1.fxml”)

(此处注意com前面没有“/”,因为getClassLoader()已经表示/目录)

第4条失败是绝对路径不正确,因为当前已在/目录下,再使用/1.fxml就出错。可以改为如下:

getClass().getClassLoader().getResource(“./1.fxml”)

2.配置文件在根目录下

getClass().getResource(“1.fxml”) ——失败

getClass().getResource(“/1.fxml”)——成功

getClass().getClassLoader().getResource(“1.fxml”)——成功

getClass().getClassLoader().getResource(“/1.fxml”)——失败

第1条是使用相对路径,路径不正确所以失败,应为:

getClass().getResource(“../../1.fxml”)

第4条失败是因为当前路径已经为/。可以使用:

getClass().getClassLoader().getResource(“./1.fxml”)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133446.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 7个最优秀的手机游戏引擎

    7个最优秀的手机游戏引擎随着智能手机成为主要的游戏平台,移动游戏引擎变得越来越流行。下面将介绍7个最优秀的手机游戏引擎。1.CoronaSDK游戏开发引擎这是一款实用Lua语言作为开发语言的游戏引擎,对我来说比起的其他的游戏引擎要好学一点。而且,Lua语言现在很有游戏开发都有相关的支持。Coronasdk官方网址:https://coronalabs.com/Lua学习网址,最好从菜鸟教程开始http://www.runoob.com/lua/lua-tutorial.htmlCoronaSDK开发欢迎W

    2022年6月6日
  • 谷歌dns和阿里dns_最快dns排行

    谷歌dns和阿里dns_最快dns排行国内比较大型大众常用的公共DNS服务器公共DNS服务器,即系统默认的DNS解析服务器。DNS全称DomainNameSystem,即域名解析系统。DNS帮助用户在互联网上寻找路径。在互联网上的每一个计算机都拥有一个唯一的地址,称作“IP地址”(即互联网协议地址)。由于IP地址(为一串数字)不方便记忆,DNS允许用户使用一串常见的字母(即“域名”)取代。公共DNS服务器,具有无广告、可以在一定程度上防止DNS劫持、不需因上网环境的改变而改变等优势,但是,使用公共DNS也可能存在系统响应慢、被劫

    2022年9月6日
  • EnterpriseLibrary6.0 log2database

    EnterpriseLibrary6.0 log2database1、引用EnterpriseLibrary6.0相关dll2、安装Microsoft.Practices.EnterpriseLibrary.ConfigConsoleV6.vsix  主要为了方便编辑config文件,不是必须安装,安装后需要更改解决方案属性,将EnterpriseLibraryv6binariespath指向企业库6.0的bin目录3、执行sql脚本创…

    2022年10月20日
  • Using Automake and Autoconf「建议收藏」

    引用自:http://www.pigfoot.org/cc/devel/auto1/ MurrayCumming<murrayc@usa.net>ChenChih-Chia<pigfoot@CDPA.nsysu.edu.tw>May28,2005(Updated)Abstract在Unix底下,automake和au…

    2022年4月10日
  • 市场上Web 应用防火墙哪家好?

    市场上Web 应用防火墙哪家好?伴随着移动互联网及互联网的发展,办公自动化也成为大势所趋。当企业通过网络办公获得无限便利后,也要时刻关注潜在的网络安全威胁。为了保护数据安全,更多企业都会配备Web应用防火墙设备。在市场上的Web应用防火墙产品应用中,被Gartner魔力象限评为Web应用防火墙领导者的F5公司的产品受到了广泛的关注与好评。 F5被Gartner魔力象限评为Web应用防火墙领导者F5推出的WEB应用防…

    2022年5月5日
  • django1.8_django-vue-admin

    django1.8_django-vue-admin前言由于之前我们一直使用的django-rest-framework-jwt这个库,但是作者在17年的时候就已经不再维护了(有部分bug没有解决),所以我们也就不用了,目前我们使用django-r

    2022年8月7日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号