Android Studio中GAE Java7转Java8迁移遇<runtime>标签错误求助
<runtime>标签不被识别的问题 看起来你遇到的问题是因为已经切换到了新版App Engine Gradle插件(com.google.cloud.tools:appengine-gradle-plugin)和Endpoints Framework V2,这个组合下,appengine-web.xml里的<runtime>标签已经不再被支持——运行时的配置方式已经转移到Gradle构建脚本中,这也是解析工具报错“Unrecognized element
解决方案:在Gradle中配置Java8运行时
你不需要修改appengine-web.xml,直接在build.gradle的appengine闭包中添加runtime配置即可,这更符合新版插件的设计规范:
appengine { // App Engine部署配置 deploy { project = "ultra-tube-89909" version = "2" // 添加这一行指定Java8运行时 runtime = "java8" def promoteProp = findProperty("appengine.deploy.promote") if (promoteProp != null) { promote = new Boolean(promoteProp) } } // 本地开发服务器的运行时配置(可选,确保本地调试也用Java8) run { runtime = "java8" } }
配置完成后,移除appengine-web.xml中的<runtime>java8</runtime>标签,重新部署就能解决这个错误。
错误原因解析
旧版App Engine Gradle插件(com.google.appengine:gradle-appengine-plugin)依赖appengine-web.xml的<runtime>标签指定运行时,但你现在使用的是Google Cloud Tools推出的新版插件,它把大部分部署配置(包括运行时)都迁移到了Gradle脚本中,不再从appengine-web.xml读取这个配置项,所以解析器会认为<runtime>是非法元素。
另外,你已经正确设置了sourceCompatibility和targetCompatibility为Java8,也确认了Cloud SDK的app-engine-java组件已安装,这些都是迁移的必要条件,无需额外调整。
内容的提问来源于stack exchange,提问作者Angel Koh

