我在我的头上撞墙...我有一个(迄今相当简单)谷歌应用程序引擎项目。在运行期间,我想读取一些XML文件(资源文件,而不是servable-static文件)进行处理。在做了一些研究之后,我决定通过servlet上下文来读取资源文件(类似于以下内容)。在开发服务器上工作得很好。部署应用程序跳过资源文件
final InputStream inputStream1 = servletContext.getResourceAsStream(“/”+ pathToXmlFile);
问题:在云中不起作用。首先,我想如何加载资源的方式是错误的,但我注意到有问题的XML文件根本没有上传。它目前位于:
的src /主/ web应用/数据/ stuff.xml和 的src /主/ web应用/ WEB-APP /数据/ stuff.xml
(我没”确保将XML文件放置在何处,以便将它复制到两个位置。)部署日志显示文件如何被跳过:
2017-08-10 13:13:42,451 DEBUG root跳过[data/stuff.xml]
2017-08-10 13:13:42,461调试root跳过上传o f [WEB-INF/data/stuff.xml]
我尝试了很多事情,但都没有成功,以部署文件。事情我想:
- 清除出临时临时目录
- 手动清洁构建
- 重命名的目录/文件
- 包括classes目录
- 与资源的文件播放周围内的文件(删除它,使用各种语法)
- 从云中删除旧版本的应用程序
- 重启Eclipse
仅供参考,AppEngine上-web.xml中的当前内容
<resource-files>
<include path="/data/*.xml" />
<include path="data/*.xml" />
</resource-files>
(不知道是否斜线需要....)
注意,部署,但这工作改变/新的.class文件,所以我对Java类的更改上传得很好。不知何故,部署机制无法识别XML文件也必须上传。
仅供参考 - 视窗时,Eclipse 4.7,Java的8,云工具1.2.0.201706082053
任何帮助表示赞赏,特别是如果有人知道的部署机制如何决定哪些文件来部署!
在引用的部分结尾处:'注意:如果路径字符串不是以斜杠开头,那么HTTP标头(如果有)在App Engine上工作,但在开发服务器上不起作用。“ –
按照建议使用/data/**.xml。最初它没有什么区别,但是我“接触”了XML文件(添加了一些空白区域),现在似乎已经上传了。日志中显示“正在上传......分段\ __静态__/data/stuff.xml” - “静态”让我担心一些,但我会试一试,看看它是否适用于云。 –