0

私は自分のjarファイルの親フォルダを取得しようとしており、それをずっと検索しています。その理由は、ビルド パスの jar の下にあるすべての .class ファイルを変更しているためです (その下に多数の jar があります)。

現在、searchForClasses メソッドの dir.listFiles() で NPE を取得しています。その理由は、ファイルの新しいインスタンスを作成しているときに、正しいパスではないためです。(私は信じている)

私は現在これを持っています:

    public void searchForClasses(File dir) {
    for (File f : dir.listFiles()) {
        if (f.getName().endsWith(".class")) {
            for (byte[] bytes : NMSversions)
                fix(f.getAbsolutePath(), bytes, NMS);
            for (byte[] bytes : OBCversions)
                fix(f.getAbsolutePath(), bytes, OBC);
            System.out.println("fixing");
        } else {
            searchForClasses(f);
        }
    }
}

そして、これは私が親ファイルを取得しようとするために使用するものです:

        File directory = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().getPath());
    main.searchForClasses(directory);

誰が私が何を切り替えることができるかについて何か考えを持っていますか?

4

1 に答える 1

0

File.listFiles()はnullを返すことができます。Javadocを参照してください。あなたはそれをチェックしていません。

于 2013-01-27T01:19:51.780 に答える