java.lang.NoSuchMethodError:java.util.Properties.load(啊?为什么?)
我已经构建了一个可以从我的 IDE (Netbeans) 正确执行的 Java 应用程序。 我已将 jar 打包成 Mac OS (Leopard) 的捆绑包。 如果我从捆绑包或 shell 运行应用程序,我会收到此错误:
java.lang.NoSuchMethodError: java.util.Properties.load(Ljava/io/Reader;)V
我正在使用 java 1.5.0_16。
你知道为什么当我使用 shell 执行 jar 时会出现此错误吗? 你知道为什么我使用IDE时看不到它吗?
谢谢!
I've built a Java application which executes correctly from my IDE (Netbeans).
I have packaged the jar into a bundle for Mac OS (Leopard). If I run the application from the bundle or from the shell I get this error:
java.lang.NoSuchMethodError: java.util.Properties.load(Ljava/io/Reader;)V
I'm using java 1.5.0_16.
Do you know why I get this error when I execute the jar using shell.
Do you know why I don't get it when I use IDE?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您使用的是 Java 5,但
Properties.load(Reader)
仅在 Java 6(也称为 1.6)中引入。 如果再次发生这种情况,请检查 JavaDocs(例如 < code>Properties JavaDoc(在这种情况下))并查看您感兴趣的成员 - 它通常会给出引入它的版本(例如,在本例中为“Since:1.6”)。您需要创建一个
InputStream
而不是Reader
- 或升级到 Java 6。我怀疑您会发现 NetBeans 正在使用 Java 6,这就是它工作的原因那里。You're using Java 5, but
Properties.load(Reader)
was only introduced in Java 6 (aka 1.6). If this ever happens again, check the JavaDocs (e.g. theProperties
JavaDoc in this case) and look at the member you're interested in - it will often give the version in which it was introduced (e.g. "Since: 1.6" in this case).You'll need to create an
InputStream
instead of aReader
- or upgrade to Java 6. I suspect you'll find NetBeans is using Java 6, which is why it's working there.只有阅读器支持 UTF-8 属性。 我们需要自己重写该方法。
Only the reader support UTF-8 properties. We need to retwrite that method by ourselves.