相关疑难解决方法(0)

Class.getResource()和ClassLoader.getResource()有什么区别?

我想知道Class.getResource()和之间的区别是什么ClassLoader.getResource()

编辑:我特别想知道文件/目录级别是否涉及任何缓存.如"在类版本中缓存的目录列表?"

以下AFAIK应该基本上做同样的事情,但它们不是:

getClass().getResource() 
getClass().getClassLoader().getResource()
Run Code Online (Sandbox Code Playgroud)

我在摆弄一些报告生成代码时发现了这一点,该代码WEB-INF/classes/从该目录中的现有文件创建了一个新文件.当使用Class中的方法时,我可以找到部署时使用的文件getClass().getResource(),但在尝试获取新创建的文件时,我收到了一个null对象.浏览目录会清楚地显示新文件存在.文件名前面带有正斜杠,如"/myFile.txt"中所示.

另一方面,ClassLoader版本getResource()确实找到了生成的文件.根据这种经验,似乎存在某种目录列表的缓存.我是对的,如果是的话,这会记录在哪里?

API文档Class.getResource()

查找具有给定名称的资源.搜索与给定类关联的资源的规则由类的定义类加载器实现.此方法委托给此对象的类加载器.如果此对象由引导类加载器加载,则该方法委托给ClassLoader.getSystemResource(java.lang.String).

对我来说,这是"Class.getResource真正调用它自己的类加载器的getResource()".这和做的一样getClass().getClassLoader().getResource().但显然不是.有人可以请我为此事提供一些启示吗?

java classloader getresource

186
推荐指数
5
解决办法
14万
查看次数

如何从Java项目中的相对路径读取文件?java.io.File找不到指定的路径

我有一个包含2个包的项目:

  1. tkorg.idrs.core.searchengines
  2. tkorg.idrs.core.searchengines

在包(2)中我有一个文本文件ListStopWords.txt,在包(1)中我有一个类FileLoadder.这是代码FileLoader:

File file = new File("properties\\files\\ListStopWords.txt");
Run Code Online (Sandbox Code Playgroud)

但有这个错误:

The system cannot find the path specified
Run Code Online (Sandbox Code Playgroud)

你能解决一下吗?谢谢.

java file

106
推荐指数
7
解决办法
48万
查看次数

在java中打开具有相对路径的资源

在我的Java应用程序中,我需要获取一些文件和目录.

这是程序结构:

./main.java
./package1/guiclass.java
./package1/resources/resourcesloader.java
./package1/resources/repository/modules/   -> this is the dir I need to get
./package1/resources/repository/SSL-Key/cert.jks    -> this is the file I need to get
Run Code Online (Sandbox Code Playgroud)

guiclass 加载将加载我的资源(目录和文件)的resourcesloader类.

至于文件,我试过了

resourcesloader.class.getClass().getResource("repository/SSL-Key/cert.jks").toString()
Run Code Online (Sandbox Code Playgroud)

为了获得真正的路径,但这种方式不起作用.

我不知道如何做目录.

java resources loading

76
推荐指数
6
解决办法
22万
查看次数

标签 统计

java ×3

classloader ×1

file ×1

getresource ×1

loading ×1

resources ×1