I'm running Eclipse Kepler Service Release 2. My program works fine when I run it in Eclipse, and it also works fine when I run the .jar using windows cmd. However, putting that same .jar onto a raspberry pi, I get the following error:
Exception in thread "Thread-1" java.lang.NoSuchMethodError: java.nio.file.Files.readAllLines(Ljava/nio/file/Path;)Ljava/util/List;
The bits of code in question are
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 ...
I'm partially convinced that the problem lies with my having incorrectly compiled the jar, but since I'm a complete novice at this sort of thing I don't know how to check I'm doing it right. Does anyone have any advice?
You're trying to use java.nio.file.Files.readAllLines(Path)
, which was introduced in Java 8. You're not going to be able to use that in Java 7.
Options:
As it happens, the overload of readAllLines
which takes a Path
and a Charset
is available on Java 7, and that's a better overload to use anyway, so that you're explicit about which encoding you want to use. So change your code to:
// Or whichever Charset you really want...
List<String> lines = Files.readAllLines(p, StandardCharsets.UTF_8);
See more on this question at Stackoverflow