gpt4 book ai didi

java - 如何在 WAR 中包含外部文件 - java.io.FileNotFoundException

转载 作者:行者123 更新时间:2023-11-28 22:42:47 25 4
gpt4 key购买 nike

我正在 tomcat (7.0.53) 服务器上部署 GRAILS 应用程序 (2.3.5),部署本身没有问题。当我单击测试 Controller (它使用 src/data 文件夹中的文件)时,出现此错误:

Error 500: Internal Server Error
URI
/schedulingAPI-0.1/tests
Class
java.io.FileNotFoundException
Message
/home/student/apache-tomcat-7.0.53/bin/src/data/room

我知道 WAR 查看 tomcat 目录,而它应该查看 WAR 本身。在创建 WAR 之前,我已经尝试将 src/data 文件夹(属性 > 添加类文件夹)添加到构建路径,但这并没有解决问题。

最佳答案

chalice documentation on deployment谈论这个。您可以使用的两个配置选项是 grails.war.copyToWebApp 和 grails.war.resources。其中第一个让您自定义“web-app”目录中的 WAR 文件中包含哪些文件。第二个允许您在最终创建 WAR 文件之前执行任何您想要的额外处理。

BuildConfig.groovy
// This closure is passed the command line arguments used to start the
// war process.
grails.war.copyToWebApp = { args ->
fileset(dir:"web-app") {
include(name: "js/**")
include(name: "css/**")
include(name: "WEB-INF/**")
}
}
// This closure is passed the location of the staging directory that
// is zipped up to make the WAR file, and the command line arguments.
// Here we override the standard web.xml with our own.
grails.war.resources = { stagingDir, args ->
copy(file: "grails-app/conf/custom-web.xml",
tofile: "${stagingDir}/WEB-INF/web.xml")
}

在您的情况下,您可以考虑像这样的自定义 grails.war.resources 命令:

grails.war.resources = { stagingDir, args ->
copy(file: "src/bin/**",
tofile: "${stagingDir}/bin")
}

当然,所有这些都取决于您打算将额外资源打包到的路径。

更新AntBuilder 的更高版本中,要包含多个文件,首选方法是使用 fileset 而不是 ** 表示法:

grails.war.resources = { stagingDir, args ->
copy(todir: "${stagingDir}/bin") {
fileset(dir: "src/bin")
}
}

关于java - 如何在 WAR 中包含外部文件 - java.io.FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22907531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com