java.lang.NoSuchMethodError только для Raspberry Pi

Я использую Eclipse Kepler Service Release 2. Моя программа работает нормально, когда я запускаю ее в Eclipse, и она также отлично работает, когда я запускаю.jar с помощью Windows cmd. Однако, помещая тот же самый.jar в Raspberry Pi, я получаю следующую ошибку:

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 ...

Я частично убежден, что проблема заключается в том, что я неправильно скомпилировал банку, но так как я начинающий в этом, я не знаю, как проверить, правильно ли я делаю. У кого-нибудь есть совет?

2 ответа

Решение

Вы пытаетесь использовать java.nio.file.Files.readAllLines(Path), который был представлен в Java 8. Вы не сможете использовать это в Java 7.

Опции:

  • Обновление до Java 8 на Raspberry Pi
  • Не используйте никакие классы / методы, указанные в Java 8. (Измените ваш проект Eclipse, чтобы нацелить его на JRE Java 7, чтобы обеспечить это)

Как это бывает, перегрузка readAllLines который занимает Path и Charset доступен на Java 7, и это лучше использовать в любом случае, так что вы точно знаете, какую кодировку вы хотите использовать. Поэтому измените свой код на:

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

Rasberry Pi, вероятно, имеет Java ME (Micro Edition), которая не содержит многих методов в Java SE (Standard Edition), которые вы, вероятно, используете на своей машине с Eclipse.

Другие вопросы по тегам