【发布时间】:2013-10-11 09:18:33
【问题描述】:
我的代码在开发机器上正常运行,但在生产环境中安装时抛出 NullPointerException。抛出异常的行如下:
MyClass.class.getClassLoader().getResource("").getPath();
所以我将其拆分为多行代码,以准确查看哪个调用返回 null,如下所示:
ClassLoader cl = MyClass.class.getClassLoader();
URL url = cl.getResource("");
String path = url.getPath();
现在 url.getPath() 调用抛出 NullPointerException,这意味着 cl.getResource("") 返回 null。
谁能告诉我这个调用怎么会返回null?
【问题讨论】:
-
你需要输入
getResource("absolute path for file")? -
出于 Javadoc 中所述的原因。哪一部分你不明白?
-
您的代码正在执行预期的操作。如果您正在搜索名称/路径为“”的资源,您希望得到什么?
-
@Matthias 和 EJP 在类加载器上调用 getResource("") 时,它返回 java 应用程序根目录的 URL。至少这是它目前在我的开发机器上的工作方式。
-
@Zak 那么这就是你本地执行环境的 ClassLoader 正在做的事情。然而,这特定于
ClassLoader。预计其他 ClassLoader 的行为会有所不同(特别是如果您在 Application Server、WebStart Launcher 或任何具有某些安全限制的环境中执行该代码)。
标签: java classloader