- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在我的代码中观察到一种奇怪的行为。我有这个代码:
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;
}
经过调试,第一次获取的url
是null
。同一段代码如何工作?
我在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
...如果是的话,您会得到一个 NullPointerException
。 getResource("xyz.properties")
返回 null
,这仅意味着它找不到该资源。我不确定为什么它会在后续调用中起作用,但在第一个调用中不起作用......这很奇怪。
关于java - Guava Resources getResource() 第一次不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31656766/
两者有什么区别? 我的资源文件打包在根级包中。在我测试的特定情况下,调用 Class.class.getResource("/rec.txt") 似乎有效。但是,当我尝试在更大的环境 (hadoop)
该应用程序具有多语言 支持。但是我们在使用应用程序上下文刷新 Resources 时遇到了问题。 目前,我的 ViewModels 正在扩展 AndroidViewModel,这样我们就可以访问 Vi
我想了解使用 View.getResources() 和 View.getContext().getResources() 的真正区别。 例如,我必须从资源中为 TextView 设置颜色.. vie
getClass().getClassLoader().getResource()和getClass.getResource()有什么区别? 从资源中检索文件时,在什么情况下应该使用哪一个? 最佳答案
我从 What is the difference between Class.getResource() and ClassLoader.getResource()? 了解到并从自己的代码中,即 g
我一直在和我的伙伴一起制作 2D 游戏,并且我通过一些 Youtube 教程学习了很多关于一些基本游戏开发概念的知识。我正在学习的其中一件事是 Sprite (对于那些不知道的,2D 图像渲染到屏幕)
我有简单的 Activity : public class TestActivity extends MainActivity { @Override public void o
当我的测试类位于默认包中时,下面的测试方法通过,而当我将其移动到包中时,测试方法失败。 目录结构如下: src/ main/ java/ some.package/ r
这个问题已经有答案了: JavaFX: Weird ClassNotFoundException after updating to Java 9 (1 个回答) 已关闭 4 年前。 我是 Java
我想要以下形式的资源 URL C:/Users/.../build/classes/jam/lena1.png 为了实现这一点,我编写了以下代码 System.out.println(getClass
我希望有人能在这里帮助我,因为我已经与一个问题作斗争有一段时间了。在我的主类中,我使用以下命令: System.out.println(getClass().getClassLoader().getR
我有以下代码,用于在我的应用程序中创建带有两个选项卡的自定义 ListView: package com.test.testing; import android.content.Context; i
大家。 我是 Java 新手,正在使用 UI 制作培训项目。在培训过程中,我决定从资源加载图标并将其加载移动到不同的类中。并遇到问题。我真的试图自己找到答案,但找不到。代码如下。 主类 package
我在src文件夹下(在resources文件夹下)放了一些.txt文件。 但我无法在运行时从该资源创建有效的 File。 String path = this.getClass().getResour
这个问题在这里已经有了答案: Way to access resource files in python (4 个答案) 关闭 9 年前。 在 Java 中,如果我想读取包含算法资源数据的文件,我
我已经在 java SE 中设置了基本的 maven 项目,其中包含一个资源: main -java -resources -config -> database.properties
我有一个 A 类,它获取一个配置文件: this.getClass().getResource("cfgFile"); 现在我创建了一个需要 A 的 cfgFile 的新类 B。现在我正在做: A.c
这段代码不在mainActivity类中 错误: cannot find symbol method getResources() 代码: public void printPhoto(int im
我正在学习教程 here .该文件位于项目的同一根文件夹中。当它在 src 文件夹和同一个包文件夹中时,我已经尝试过这样做。这 3 个位置都不起作用。 具体的代码行是: ImageIcon ii =
我有以下问题。在我们的集成测试中,我们使用不同的配置,该配置将在测试之前使用以下代码从测试资源中加载: URL resource = ClassLoader.getSystemResource("ap
我是一名优秀的程序员,十分优秀!