首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取多模块Google AppEngine中的资源文件

获取多模块Google AppEngine中的资源文件
EN

Stack Overflow用户
提问于 2015-05-27 14:27:21
回答 1查看 515关注 0票数 0

我遵循下面的doc:Files来设置一个特定的资源文件位置,如下所示:

appengine-web.xml:

代码语言:javascript
复制
<resource-files>
        <include path="/resources/*" />
</resource-files>

现在,我需要在servlet上下文之外获取资源文件。所以,我试着用:

代码语言:javascript
复制
InputStream jsonResource = new FileInputStream("default/WEB-INF/resources/" + resourceName);

这在本地开发服务器上运行很好,但是在生产中,我得到了一个IOException:

代码语言:javascript
复制
getResourceAsString: /base/data/home/apps/s~my-app-id/module2:multi-module-1.384597049666152751/default/WEB-INF/resources/query_url.json (No such file or directory)

以下是我的GAE模块结构:

代码语言:javascript
复制
root-ear
 - default
   - src/main/webapp/WEB-INF
     - resources
   - src/main/java (some code)
 - module2
   - src/main/java (code that needs the resource)

我看错文件了吗?资源文件的正确路径应该是什么?

其他详情:

  • 我刚从一个模块AppEngine应用程序迁移过来--只要使用classLoader.getResourceFromStream就可以从src/main/resources获得我的资源,但是这在ear结构中已经不再起作用了。
  • 我使用Gradle进行配置,如appengine示例:https://github.com/GoogleCloudPlatform/appengine-modules-sample-java中所建议的那样
  • 我不能使用ServletContext.getResources,因为我无法访问服务中需要这些资源文件的"servlet上下文“。(虽然我可以一路传递它,如果绝对需要的话--但是基于文档,如果我正确地知道路径,java.io.File应该能够给我资源文件)
  • 如果有人能建议正确的设置,我的"build.gradle“只是把资源放在一个地方,在一个地方,gradle-应用程序插件将它捡起来,并将它放在当前路径上的GAE产品,那将是一个完美的解决方案!
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-27 14:43:36

当前目录包含“WEB”和"_ah“文件夹。

下面是这个结构在WEB中的表现:

代码语言:javascript
复制
WEB-INF
 - <all my files from my normal WEB-INF>
 - resources <<< The folder I added under <resource-files>
 - lib
 - classes
 - appengine-generated

通过使用以下代码片段列出本地文件,我能够解决这个问题:

代码语言:javascript
复制
File curDir = new File("./WEB-INF");
File[] files = curDir.listFiles();
for (File file: files) {
  logger.info(file.getName());
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30485435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档