我在Eclipse Helios中创建了一个带有单个子模块的最小Maven项目。
在src / test / resources
文件夹中,我放置了一个文件“ install.xml”。在文件夹src / test /
java中,我创建了一个包含单个类的包,该类执行以下操作:
@Test
public void doit() throws Exception {
URL url = this.getClass().getClassLoader().getResource("install.xml");
System.out.println(url.getPath());
}
但是当我将代码作为junit 4单元测试运行时,我只是得到了NullPointerException。以前,这已经工作了一百万次了。有任何想法吗?
我遵循了此指南:
http://www.fuyun.org/2009/11/how-to-read-input-files-in-maven-junit/
但仍然出现相同的错误。
使用时
this.getClass().getResource("myFile.ext")
getResource将尝试查找相对于包的资源。如果您使用:
this.getClass().getResource("/myFile.ext")
getResource 会将其视为绝对路径,并像完成操作一样简单地调用类加载器。
this.getClass().getClassLoader().getResource("myFile.ext")
之所以不能/
在ClassLoader
路径中使用前导,是因为所有ClassLoader
路径都是绝对的,因此路径中的/第一个字符不是有效的。
问题内容: 我有这个测试应用程序: 当我从Eclipse运行它时,出现错误: 类路径(来自.CLASSPATH文件) 在我的c:\ project \ src文件夹中,我只有Test.java文件和包含pacman.png的’assets’目录。 我在做什么错以及如何解决? 问题答案: 我会这样: “ /assets/pacman.png”是绝对位置,而“ assets / pacman.png”
问题内容: 我正在尝试提高Java的优化技能。为了做到这一点,我有一个旧的程序,我正在尽力使它变得更好。在此程序中,我使用SL4J进行日志记录。要获取记录器,我需要执行以下操作: 在编写代码时,我认为这是最好的选择,因为我删除了对类名(可以重构)的引用。但是现在我不太确定了… 另一方面,保留对类名的引用,但它删除一个方法调用。对于一个班级来说,这可能并不是一个很大的进步,但是当您有很多班级时,这可
问题内容: 我有一些调用的代码。 不过,这将返回null。 当我从命令行而不是从Eclipse启动相同的代码时,它将返回一个类加载器。 我可以破解代码来做到这一点… 两者都被编译并使用相同的JVM运行。(我确定99.99%)。 任何人都知道为什么第一个会为类加载器返回null? 编辑: 我的问题是:“没有人知道为什么同一类通过Eclipse启动时会返回null,而从命令行加载时会返回类加载器。”
问题内容: 说我有一些Java代码: 还有一些代码可以加载: 能永远?为什么/为什么不呢?如果是这样,在什么情况下? 问题答案: 根据此方法javadoc: 返回该类的类加载器。一些实现可能使用null来表示引导类加载器。如果此类是由bootstrap类加载器加载的,则此方法在此类实现中将返回null。
我从课堂上了解到他们之间的区别。getResource()和类加载器。getResource()?从自己的代码来看 与相同 发布无法读取jar文件中的图像显示使用 在可执行文件中,jar文件返回null,而 返回正确的URL。 委托给删除前导斜杠后,我希望这些调用是相同的,但显然在本例中不是这样。即使将特殊类装入器附加到特定类,每次调用的装入器也应相同,这同样会导致相同的行为。 因此,问题是:是否