gpt4 book ai didi

java - Guava Resources getResource() 第一次不工作

转载 作者:太空宇宙 更新时间:2023-11-04 13:36:22 24 4
gpt4 key购买 nike

我在我的代码中观察到一种奇怪的行为。我有这个代码:

String propsPath = Resources.getResource(
"xyz.properties").getPath();

我总是收到这个错误

java.lang.IllegalArgumentException: resource xyz.properties not found.

我第一次调用使用上述代码块的方法。在随后的调用中,该方法工作正常并且能够正确定位资源。检查 getResource 代码后,我可以看到

public static URL getResource(String resourceName) {
URL url = Resources.class.getClassLoader().getResource(resourceName);
checkArgument(url != null, "resource %s not found.", resourceName);
return url;
}

经过调试,第一次获取的urlnull。同一段代码如何工作?

我在getClassLoader的javadoc中找到了这个

Returns the class loader for the class. Some implementations may use null to represent the bootstrap class loader. This method will return null in such implementations if this class was loaded by the bootstrap class loader.

有人可以解释一下什么是引导类加载器吗?我的代码第一次使用相同的类加载器,但下次使用其他类加载器吗?还是完全是其他问题?

最佳答案

您可能想尝试更新版本的 Guava。我不知道它是否能解决您的问题,但不久前我们进行了更改,使用 Thread.currentThread().getContextClassLoader()(如果存在),而不是使用 Resources.class.getClassLoader()

另外,请注意 getClassLoader() 不会返回 null...如果是的话,您会得到一个 NullPointerExceptiongetResource("xyz.properties") 返回 null,这仅意味着它找不到该资源。我不确定为什么它会在后续调用中起作用,但在第一个调用中不起作用......这很奇怪。

关于java - Guava Resources getResource() 第一次不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31656766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com