我已经尝试了有关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)
答案 0 :(得分:2)
你的第一个问题是
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");