1

.ear.jarおよび.warパッケージがあります。ファイルシステムを調べてマッピングを登録することで、サーブレットクラスを動的に読み取っています。

問題は、開発用に機能することです。ディレクトリを読み取ることができ、適切なファイル名でマッピングを作成できます。問題は、耳をパッケージ化すると機能しないことです。

  • 新しいものを使うFile( ... ).isDirectory()
    • ディレクトリにいるかどうかを確認するには、有効なディレクトリ パスに対して常に false を返します。
  • 新しいものを使うFile( ... ).listFiles()
    • ディレクトリからファイルを一覧表示できるようにするには、常にnull有効なディレクトリ パスを返します。

拡張子で終わらないエンド パスを検出することでディレクトリ チェックの問題を解決しました (私の目的では、そのような検証で十分です) が、特定のパスからファイルを一覧表示することはまだできません。

この状況を考えると、私は質問があります:

パッケージから実行時にファイル名を一覧表示するにはどうすればよい.warですか?

現在のコード:

private void addAllFiles( File dir, ArrayList<ConventionPath> list ) {
    for ( File file : dir.listFiles() ) { // dir.listFiles() comes null here =/
        String absolutePath = file.getAbsolutePath();

        boolean isActionDir = ConventionFiles.isActionDir( absolutePath, fileSeparator );
        boolean isActionFile = ConventionFiles.isActionFile( absolutePath );

        if ( isActionDir ) {
            addAllFiles( file, list );
        }

        if ( isActionDir || isActionFile ) {
            ConventionPath conventionPath =
                new ConventionPath( absolutePath, fileSeparator );
            list.add( conventionPath );
        }
    }
}
4

1 に答える 1