我使用Spring MVC(不是Spring Boot)作为基于Google App Engine REST的Web应用程序。今天,我将GAE Java运行时升级到1.8(Java 8)和servlet-api 3.1。应用引擎开发工具包版本 1.9.56。
所有春豆都能完美加载,没有任何错误。我在提供请求时收到此异常:
GET http://localhost:9080/api/systems/urn:bnb:system:0ee64dc1-5dcd-46a5-aeaa-3d15858cb79e/details
2017-10-09 17:26:47.760:WARN:oejs.ServletHandler:qtp823914581-19: /api/systems/urn:bnb:system:0ee64dc1-5dcd-46a5-aeaa-3d15858cb79e/details
java.nio.file.InvalidPathException: Illegal char <:> at index 68: C:AmitAPPappapisvcbuildexploded-app/api/systems/urn:bnb:system:0ee64dc1-5dcd-46a5-aeaa-3d15858cb79e/details/index.html
at sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
at sun.nio.fs.WindowsPath.parse(WindowsPath.java:94)
at sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:255)
at org.eclipse.jetty.util.resource.PathResource.<init>(PathResource.java:213)
at org.eclipse.jetty.util.resource.PathResource.addPath(PathResource.java:304)
at com.google.appengine.tools.development.jetty9.StaticFileFilter.getResource(StaticFileFilter.java:133)
at com.google.appengine.tools.development.jetty9.StaticFileFilter.maybeServeWelcomeFile(StaticFileFilter.java:172)
at com.google.appengine.tools.development.jetty9.StaticFileFilter.doFilter(StaticFileFilter.java:96)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366)
at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349)
at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1751)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
at com.google.appengine.tools.development.jetty9.DevAppEngineWebAppContext.doScope(DevAppEngineWebAppContext.java:94)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
at com.google.appengine.tools.development.jetty9.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:597)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
at org.eclipse.jetty.server.Server.handle(Server.java:534)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108)
at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.execute(ExecuteProduceConsume.java:100)
at org.eclipse.jetty.io.ManagedSelector.run(ManagedSelector.java:147)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
at java.lang.Thread.run(Thread.java:745)
这是我的应用程序引擎网络.xml:
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<!-- Test GAE instance -->
<application>webapp-1013</application>
<version>1-2</version>
<threadsafe>false</threadsafe>
<runtime>java8</runtime>
<system-properties>
<property name="DEFAULT_ENCODING" value="UTF-8" />
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
</system-properties>
<sessions-enabled>true</sessions-enabled>
<inbound-services>
<service>warmup</service>
</inbound-services>
</appengine-web-app>
当我在 GAE 中使用 Java 7 运行时时,我没有遇到这个问题。请帮忙。
您似乎遇到了一个影响 Windows 上开发应用服务器的错误(它不会影响部署到生产 App Engine 的应用)。 该错误正在跟踪:https://issuetracker.google.com/issues/63595917
即将发布的 SDK 版本 1.9.58 中包含对此的修复。