ejecutar - java.lang.NoSuchMethodError solo en frambuesa pi
raspberry pi java projects (2)
Estoy ejecutando Eclipse Kepler Service Release 2. Mi programa funciona bien cuando lo ejecuto en Eclipse, y también funciona bien cuando ejecuto el .jar usando windows cmd. Sin embargo, poniendo ese mismo .jar en una pi raspberry, me sale el siguiente error:
Exception in thread "Thread-1" java.lang.NoSuchMethodError: java.nio.file.Files.readAllLines(Ljava/nio/file/Path;)Ljava/util/List;
Los bits de código en cuestión son
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 ...
Estoy parcialmente convencido de que el problema radica en que compilé incorrectamente el frasco, pero dado que soy un novato en este tipo de cosas, no sé cómo comprobar que lo estoy haciendo bien. ¿Alguien tiene algún consejo?
Está intentando usar java.nio.file.Files.readAllLines(Path)
, que se introdujo en Java 8. No va a poder usar eso en Java 7.
Opciones:
- Actualice a Java 8 en la frambuesa pi
- No utilice ninguna clase / método que esté especificado en Java 8. (Cambie su proyecto Eclipse para apuntar a Java 7 JRE para aplicar esto)
readAllLines
la readAllLines
que la sobrecarga de readAllLines
que toma una Path
Charset
y un Charset
está disponible en Java 7, y esa es una mejor sobrecarga para usar de todos modos, para que sea explícito sobre qué codificación desea usar. Así que cambie su código a:
// Or whichever Charset you really want...
List<String> lines = Files.readAllLines(p, StandardCharsets.UTF_8);
Rasberry Pi probablemente tenga Java ME (Micro Edition), que no contiene muchos de los métodos en Java SE (Standard Edition) que probablemente tenga en su máquina con Eclipse.