【发布时间】:2016-10-12 20:23:56
【问题描述】:
你好,这个问题是Java Maven reference files in WebApp
我正在尝试将一个文件夹复制到构建目录中(这是成功的)然后我尝试运行应用程序并将该目录复制到一个临时目录中,以便我可以进行更改并将其压缩到一个 Scorm 包中。
该文件夹在构建中为
C:\workspace\admin\target\admin-1.0-SNAPSHOT\resources\applications\scorm
我正在尝试从正在运行的应用程序中将其引用为:
System.out.println(new File("applications/scorm").getAbsolutePath());
File source = new File("applications/scorm");
File dest = new File(Constants.TEMP_DIR_PATH + '/' + guideId);
try {
FileUtils.copyDirectory(source, dest);
System.out.println("copy complete");
} catch (IOException e) {
e.printStackTrace();
}
它永远找不到文件,我的绝对路径检查给了我
C:\workspace\admin\applications\scorm\
这表明它正在根目录中查找。
即该文件夹位于资源下的构建目录的根目录中,File source = new File("What is the file URL from the build directory?"); 引用该文件夹的内容是什么?
编辑
这行得通
target/admin-1.0-SNAPSHOT/resources/applications/scorm
但我怀疑将其部署为 WAR 文件时是否可以在生产环境中工作
【问题讨论】:
-
也许可以试试类路径资源?在这种情况下,您可以灵活应对战争或爆炸战争(即解压战争)。
-
我将如何处理,您如何引用该文件夹?
-
将它们复制到
src\main\resources\applications而不是src\main\webapp\resources\applications。 -
试试这个
File source = new File("../../../resources/applications/scorm");,让我们知道它是否有效。 -
正如我之前评论的那样,您不能,并且无论您如何努力,都永远无法以 @ 的身份访问 JAR 或 WAR 中的资源987654330@。这没用。它不是
File。你只能有一个InputStream。src/main/resources中的任何内容都是最终会出现在 JAR/WAR 中的资源。还有I still don't understand the real question here.