0

スタンドアロン JAR アプリケーションを中心とした Web アプリケーションの構築に取り組んでいます。基本的に、JAR アプリケーションは入力ファイルを読み取って処理し、出力ファイルを生成します。

入力ファイルは、このように JAR のすぐ隣に配置されます。

ここに画像の説明を入力

JAR アプリケーションのコードを以下に示します。

public class FileReadWriteApp {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    try {

        File inFiles = new File("../inputFiles");
        if (!inFiles.exists()) {
            if (inFiles.mkdirs()) {
                System.out.println("Input directory is created!");
            } else {
                System.out.println("Failed to create input directory!");
            }
        }
        Path inputPath = FileSystems.getDefault().getPath("testInput.txt", new String[0]);
        Files.copy(inputPath, new FileOutputStream("../inputFiles/testInput.txt"));

        String content = new String(Files.readAllBytes(inputPath));
        String parsedInput = content.toUpperCase();

        new File("../outputFiles").mkdirs();
        Files.write(Paths.get("../outputFiles/testOutput.txt"), parsedInput.getBytes());

    } catch (IOException exc) {
        System.out.println(exc);
        System.exit(1);
    }
}

コマンド プロンプトで JAR を実行すると、JAR ファイルより 1 つ上のレベルに inputFiles フォルダーと outputFiles フォルダーが正常に作成され、対応する入出力ファイルが正しく配置されます。

ここに画像の説明を入力

しかし、構築中の Spring ベースの Web アプリケーションに JAR を依存関係として追加し、入力ファイルと JAR ファイルを同じ場所に配置すると、入力ファイルにアクセスできなくなります。

Spring Web アプリケーションでは、以下に示すように、入力ファイルと JAR ファイルの両方を配置しました。

ここに画像の説明を入力

以下に示すように、それらが lib ディレクトリの Target フォルダーに表示されることさえ確認できます。

ここに画像の説明を入力

私の Spring Controller メソッドでは、次main()のように JAR ファイルのメソッドを実行しています。

String[] args = new String[] { "" };
filereadwriteapp.FileReadWriteApp.main(args);

ただし、コンソールには次のメッセージが表示されます。

Input directory is created!
java.nio.file.NoSuchFileException: testInput.txt

アプリケーションがファイルを見つけられない理由がわかりませんtestInput.txt

この問題の修正に関して誰か親切に教えてもらえますか?

testInput.txt「依存関係」JARファイルがアクセスできるように、ファイルを配置する特定の場所はありますか?

Web アプリケーション内の WEB-INF ディレクトリからリソースをロードしていないことに注意してください。私の場合、相対パスからそれ自体へのリソースをロードする「依存関係」JAR に問題があります。

この点で何か助けていただければ幸いです。

4

1 に答える 1