Java 这个.getClass().getClassLoader().getResource(";).getPath()在这里可以使用NPE吗?

Java 这个.getClass().getClassLoader().getResource(";).getPath()在这里可以使用NPE吗?,java,classloader,absolute-path,file-location,Java,Classloader,Absolute Path,File Location,我得到了代码审查评论,下面的行可以返回NPE this.getClass().getClassLoader().getResource("").getPath() Paths.get("").toAbsolutePath().normalize().toString() 因为我指的是自学班,我有没有机会获得NPE 我发现,如果我加载外部文件,那么就有NPE的可能性,对吗?我用下面的代码来避免NPE this.getClass().getClassLoader().getResource(""

我得到了代码审查评论,下面的行可以返回
NPE

this.getClass().getClassLoader().getResource("").getPath()
Paths.get("").toAbsolutePath().normalize().toString()
因为我指的是自学班,我有没有机会获得NPE


我发现,如果我加载外部文件,那么就有
NPE
的可能性,对吗?

我用下面的代码来避免
NPE

this.getClass().getClassLoader().getResource("").getPath()
Paths.get("").toAbsolutePath().normalize().toString()
是的,从评论来看,这个JavaDoc非常有用


getResource(“”->不确定,但我想这可以。你能回答为什么吗?我怎样才能克服它?您可以添加一个简单的空检查术语“资源(名称)”受类加载器实现的约束。在默认系统类加载器和
URLClassLoader
下,当加载器的搜索路径未指定或不包含任何目录项时,
getResource(“”
将实际返回
null
。其他一些加载程序可能更愿意无条件地返回
null
或将特殊语义附加到空资源名称或其他任何内容。最好使用
System.getProperty(“java.class.path”)
,或者,如果适用(JDK<9),
((URLClassLoader)ClassLoader.getSystemClassLoader()).geturl()
。但在一般情况下,永远不能100%保证它不会返回
null
,因为它最终取决于启动JVM的方式。