我正在围绕独立 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 文件高一级的 inputFiles 和 outputFiles 文件夹,并正确放置了相应的输入/输出文件。
但是,当我将 JAR 作为依赖项添加到我正在构建的基于 Spring 的 Web 应用程序中并将输入文件和 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 从相对路径加载资源到自身的问题。
在这方面的任何帮助将不胜感激。