Guten Abend acessing,NotDirectoryException während einer JAR-Datei
Ich versuche, eine JAR-Datei für den Zugriff auf dynamisch enthält, dass ein paar * .class-Dateien. Ich habe darüber gelesen, und eine gute Möglichkeit ist, die Java-Klasse FileSystem zu verwenden, um auf mehrere Dateien im Jar zuzugreifen. Ich habe schrieb den folgenden Code:
private void loadJar(String gameName) {
final String packageBinaryName = gameName;
final String pathname = packageBinaryName.replace(".", "/") +".jar";
URI uri = null;
uri = new File(pathname).toURI();//.toURL();
final String[] array = uri.toString().split("!");
FileSystem fs = null;
Path dir;
try
{
if(array.length == 2)
{
final Map<String, String> env = new HashMap<>();
fs = FileSystems.newFileSystem(URI.create(array[0]), env);
dir = fs.getPath(array[1]);
}
else
dir = Paths.get(uri);
DirectoryStream<Path> stream;
System.out.println(dir);
stream = Files.newDirectoryStream(dir, "*.class");
}
catch (IOException e)
{
e.printStackTrace();
}
}
Aber ich bekomme eine java.nio.file.NotDirectoryException
Die JAR-Datei vorhanden ist, und es verweist auf den Schreibpfad. Was könnte dieses Problem verursachen?
Die dir druckt die folgenden:
C:\Users\afonso\workspace\GameEvaluatorDummy\src\TicTacToe.jar
EDIT: Beachten Sie, dass die Anweisung dir Debuggen seinen Wert auf die else-Anweisung wird
dir=Paths.get(uri);
Sie haben Recht mit der Exmazulierungsmarke, aber das macht einen Unterschied bei dem Fehler, der beim Zugriff auf die JAR auftritt? –
Nun, eine JAR-Datei ist eine Datei, kein Verzeichnis. – Vampire
Vielleicht funktioniert es, wenn Sie stattdessen eine jars-URL zu Paths.get() geben. 'jar: pfad/zu/jar! /' wenn ich es richtig verstanden habe. – Vampire