仅限覆盆子pi上的java.lang.NoSuchMethodError

时间:2014-05-30 14:49:51

标签: java eclipse raspberry-pi nio nosuchmethoderror

我正在运行Eclipse Kepler Service Release 2.当我在Eclipse中运行它时,我的程序运行正常,当我使用windows cmd运行.jar时,它也能正常工作。但是,将相同的.jar放到树莓派中,我收到以下错误:

Exception in thread "Thread-1" java.lang.NoSuchMethodError: java.nio.file.Files.readAllLines(Ljava/nio/file/Path;)Ljava/util/List;

有问题的代码是

import java.nio.file.Files;
import java.nio.file.Path;

import dataTypes.Detection;

public final class FileOperations {
// ...
    public static Detection readDetection(Path p) {
        try {
            List<String> lines = Files.readAllLines(p);
// etc ...

我部分确信问题在于我错误地编写了jar,但由于我是一个完全新手,我不知道如何检查我做得对。有没有人有任何建议?

2 个答案:

答案 0 :(得分:4)

您正在尝试使用Java 8中引入的java.nio.file.Files.readAllLines(Path)。您无法在Java 7中使用它。

选项:

  • 在raspberry pi上升级到Java 8
  • 不要使用为Java 8指定的任何类/方法。(将Eclipse项目更改为以Java 7 JRE为目标来强制执行此操作)

碰巧发生了readAllLines的重载,它带有PathCharset,可用于Java 7,,这是一个更好的重载使用无论如何,这样你就明确了想要使用哪种编码。所以将代码更改为:

// Or whichever Charset you really want...
List<String> lines = Files.readAllLines(p, StandardCharsets.UTF_8);

答案 1 :(得分:1)

Rasberry Pi可能有Java ME(Micro Edition),它不包含Java SE(标准版)中的许多方法,您可能在运行Eclipse的计算机上使用这些方法。