【问题标题】:Using getClass in jar returning null point exception在jar中使用getClass返回空点异常
【发布时间】:2014-04-14 14:58:53
【问题描述】:

我已经尝试了有关我在 stackoverflow 上看到的有关此问题的所有内容,但似乎无法使用 .getClass 方法正确检索 xml 文件。我继续得到一个空指针异常,但不知道为什么。我尝试了几种变体。如果我做错了什么,请告诉我。此外,如果您需要任何其他信息,请询问:D。以下是我尝试过的一些变体

URL configURL = new URL("" + Transcriber.class.getClass().getClassLoader().getResourceAsStream("/config.xml"));
ConfigurationManager cm = new ConfigurationManager(configURL);

URL configURL = new URL("" + Transcriber.class.getClass().getClassLoader().getResource("/config.xml"));
ConfigurationManager cm = new ConfigurationManager(configURL);

InputStream configURL = Transcriber.class.getClass().getClassLoader().getResourceAsStream("/config.xml");
ConfigurationManager cm = new ConfigurationManager(configURL.toString());

我还应该注意,当使用 eclipse 时,我能够检索 xml。但是,当转换为可执行 jar 时,我不能。

编辑:

URL configURL = new URL("" + Transcriber.class.getResourceAsStream("config.xml"));

控制台输出 =

Exception in thread "main" java.net.MalformedURLException: no protocol: java.io.BufferedInputStream@238be9f2
    at java.net.URL.<init>(Unknown Source)
    at java.net.URL.<init>(Unknown Source)
    at java.net.URL.<init>(Unknown Source)
    at speechcapture.Transcriber.main(Transcriber.java:53)

【问题讨论】:

  • jar 中的config.xml 资源在哪里?
  • 与 Transcriber.class (bin/speechcapture/) 位于同一包文件夹中
  • 上一篇文章完美解释了这个问题stackoverflow.com/questions/1119740/…
  • @AurA 我似乎已经尝试过链接中列出的方法,除非我在阅读提供的答案时错过了一个。

标签: java nullpointerexception classloader configurationmanager


【解决方案1】:

你的第一个问题是

Transcriber.class.getClass()

返回Class 类的Class 对象。你想要的是

Transcriber.class

第二个问题是,假设您的 config.xml 资源与 Transcriber 类在同一个包中,那么您需要提供资源的完全限定路径或相对于 Transcriber 类获取它' 包裹。所以要么

URL configURL = Transcriber.class.getResource("config.xml");

URL configURL = Transcriber.class.getResource("/com/example/config.xml");

【讨论】:

  • 我已经尝试过 URL configURL = new URL("" + Transcriber.class.getResourceAsStream("config.xml"));同样,config.xml 与 Transcriber 类在同一个包中。
  • @user2916286 我的答案中的两个条目都可以工作 ifTranscriberconfig.xml 文件都在同一个包中。注意URL 是如何构造的。
  • 我按原样添加了它,但我仍然看到错误空指针异常。但是随着添加你的,我现在看到了一个格式错误的 URL 异常。
  • @user2916286 发布您正在使用的确切内容和完整的堆栈跟踪。在编辑您的问题时执行此操作。
  • @user2916286 注意我的代码和你的代码之间的区别。你为什么要这样构建你的URL
猜你喜欢
  • 2014-09-21
  • 2019-05-13
  • 2016-02-10
  • 2013-01-13
  • 2016-02-27
  • 2015-03-03
  • 2018-03-15
  • 2012-07-10
  • 2014-05-01
相关资源
最近更新 更多