おはよう、JARファイルにアクセス中にNotDirectoryExceptionが発生しました
* .classファイルを2つ含むJARファイルに動的にアクセスしようとしています。 私はそれについて読んだことがあります。良い方法は、javaクラスのFileSystemを使ってjarファイル内のいくつかのファイルにアクセスすることです。私は、次のコードを書いてきました:
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();
}
}
をしかし、私はJARファイルが存在し、それが書き込みパスを指すjava.nio.file.NotDirectoryException
を取得します。この問題の原因は何ですか?
dirが次のように出力されます
C:\Users\afonso\workspace\GameEvaluatorDummy\src\TicTacToe.jar
EDIT:else文には、dir文はその値を取得します。もちろん、
dir=Paths.get(uri);
あなたはexcalmationマークについては正しいですが、JARにアクセスする際に発生するエラーについては違いがありますか? –
まあ、JARファイルはファイルであり、ディレクトリではありません。 – Vampire
Paths.get()へのjar-URLを代わりに与えると動作するかもしれません。 'jar:path/to/jar!/'を正しく考えていればそれです。 – Vampire