如何修复“ com.google.cloud.tools.appengine.AppEngineException:java.nio.file.NoSuchFileException:... \ exploded- {project} \ WEB-INF \ appengine-web.xml”

时间:2019-07-09 15:55:54

标签: java xml google-app-engine gradle

我正在努力部署到Google App Engine标准环境。部署之前,我想在本地进行测试,因此我正在运行gradlew appengineRun

一切正常,直到我遇到此错误:“ com.google.cloud.tools.appengine.AppEngineException:java.nio.file.NoSuchFileException:C:\ Users {user} \ StudioProjects {project} \ build \ exploded -{project} \ WEB-INF \ appengine-web.xml”。

这很奇怪,因为我检查了项目中的文件结构并且存在appengine-web.xml。

{project}
    ...
    build
        ...
        exploded-{project}
            ...
            WEB-INF
                ...
                appengine-web

当我看到文件确切应有的位置时,我不知道为什么文件不存在。

我的appengine-web.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <application>{ID}</application>
    <use-google-connector-j>true</use-google-connector-j>
    <version>1</version>
    <threadsafe>true</threadsafe>
    <runtime>java8</runtime>
    <system-properties>
        <property name="java.util.logging.config.file" value="WEB-INF/classes/logging.properties" />
    </system-properties>
    <automatic-scaling>
        <!-- scaling details -->
    </automatic-scaling>
</appengine-web-app>

我确实有一个问题,名称空间为红色,我得到 URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs) 滚动时显示一条消息。

我已经尝试通过获取资源来解决此解决方案,但是没有成功。我不知道这可能是问题所在,但这是我唯一的体面猜测。

我需要识别appengine-web.xml文件才能继续。如果有人知道发生了什么,或有任何想法向正确的方向指点,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

TLDR:

具有名称和您选择的类型的文件与格式为{file-name}。{type}的文件名之间是有区别的。如果您希望文件被识别,请执行后者。

详细信息

结果,在gradle看来,拥有名为appengine-web的文件和声明它为.xml文件与制作名为appengine-web.xml的文件之间存在巨大差异。

我添加了一个新文件,该文件以.xml作为其名称的一部分,并解决了我之前遇到的问题。

完成后,我遇到了一个用于记录属性的文件的相同问题(请参阅我的问题的.xml文件中的system-properties字段)。

我创建了一个名为logging的文件,并将其设置为.properties文件,但找不到该文件。然后,我制作了一个名为logging.properties的文件,并成功找到了该文件。

故事的寓意,在处理Google App Engine时,在名称中明确声明文件类型。