1

我有一个 .jar 文件可以在我的 mac 上完美运行,但我需要在 Web 服务器上运行它......所以当我使用命令行使这个文件工作时,它给了我这个错误:

[root@mysite.com dist]$ java -jar PDFparser.jar ffive.pdf
Exception in thread "main" java.lang.NoSuchMethodError: method java.lang.String.getBytes with signature (Ljava.nio.charset.Charset;)[B was not found.
at org.apache.commons.io.IOUtils.write(IOUtils.java:1527)
at org.apache.commons.io.FileUtils.writeStringToFile(FileUtils.java:1929)
at org.apache.commons.io.FileUtils.writeStringToFile(FileUtils.java:1962)
at pdfparser.PDFparser.main(PDFparser.java:171)

我不是创建该 .jar 应用程序的人,但它的工作方式正是我在我的 Mac 上需要的方式......但它需要它用于网站,所以我需要它在 Web 服务器上工作......有谁知道这个错误是什么意思,我该怎么办?我不懂Java语言,所以如果你向我解释我应该怎么做,那就太棒了,就像我是一个非常愚蠢的人......一步一步...... :)

4

3 回答 3

5

String.getBytes(Charset c)自 Java 1.6 起才可用。最有可能的是,您 Mac 上的 Java 版本是 1.6+,但您的目标服务器低于 1.6。

您需要在 Web 服务器上至少更新到 Java 1.6 才能使用此方法。

来源

于 2013-01-30T17:41:58.470 回答
1

java.lang.NoSuchMethodError: method java.lang.String.getBytes with signature (Ljava.nio.charset.Charset;)[B was not found.

意味着你的jar文件中的一个类在Java安装中找不到对应的方法。我怀疑您的 jar 文件是使用比您的 Web 服务器上安装的版本更高/更新的 java 版本创建的。

在您的工作服务器上,键入

$ java -version

并在您的 Web 服务器上执行相同的操作,并比较版本号。

于 2013-01-30T17:41:16.123 回答
0

您的 Mac 或网络服务器没有问题。jar 是使用较低版本的 Java(1.5 或更低版本)创建的,而 String.getBytes() 仅适用于 java 1.6+。

存在版本不匹配。

于 2013-01-30T17:56:11.353 回答