Jon*_*eet 48
使用getResource而不是getSystemResource使用特定于给定类加载器的资源而不是系统.例如,尝试以下任何一种方法:
URL resource = getClass().getClassLoader().getResource("R.txt");
URL resource = Foo.class.getClassLoader().getResource("R.txt");
URL resource = getClass().getResource("/R.txt");
URL resource = Foo.class.getResource("/R.txt");
Run Code Online (Sandbox Code Playgroud)
请注意调用时的前导斜杠Class.getResource而不是ClassLoader.getResource; Class.getResource除非您有一个前导斜杠,否则它是相对于包含该类的包,而ClassLoader.getResource始终是绝对的.
显然你的JAR没有被系统类加载器加载,所以getSystemResource()无法工作.这应该工作:
ClassFromProjectA.class.getClassLoader().getResource("R.txt")
Run Code Online (Sandbox Code Playgroud)
IMO更方便的是将资源放在与使用它们的类相同的包中,因此您可以使用更短的
ClassFromProjectA.class.getResource("R.txt")
Run Code Online (Sandbox Code Playgroud)
(或者,在那个班级里面getClass().getResource("R.txt"))