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.