I was working on a simple Java app-engine site and got the following error trying to execute mvn package appengine:run on Windows. Specifically, DevAppServerRunner failed to start with an exception (most of stack trace excluded):
[INFO] GCLOUD: java.nio.file.InvalidPathException: Illegal char <:> at index 3: /C:/<remainder of path excluded>
[INFO] GCLOUD: at java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:191)
I retested with cloudSdkVersion 568.0.0, DevAppServerRunner started just fine and I was able to complete my test. I pinned the cloudSdkVersion by using the following line in the appengine-maven-plugin configuration section:
<build>
...
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>2.8.7</version>
<configuration>
<projectId>test-site</projectId>
<version>GCLOUD_CONFIG</version>
<cloudSdkVersion>568.0.0</cloudSdkVersion>
</configuration>
</plugin>
</plugins>
</build>
Immediately after testing successfully, I unpinned cloudSdkVersion and it failed again the same way as before.
Don’t know how deep in the stack the root cause may live, but whatever’s adding the leading / to files probably needs to not do that when running on Windows.
Looking at the full stack trace, and the release notes for Google Cloud CLI 569.0.0 I’m wondering if this has to do with the upgrade to Jetty 12.1.9.
[INFO] GCLOUD: java.nio.file.InvalidPathException: Illegal char <:> at index 3: /C:/<remainder of path excluded>
[INFO] GCLOUD: at java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:191)
[INFO] GCLOUD: at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:142)
[INFO] GCLOUD: at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:46)
[INFO] GCLOUD: at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92)
[INFO] GCLOUD: at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:203)
[INFO] GCLOUD: at java.base/java.nio.file.Path.resolve(Path.java:513)
[INFO] GCLOUD: at org.eclipse.jetty.util.resource.PathResource.resolveSchemeSpecificPath(PathResource.java:315)
[INFO] GCLOUD: at org.eclipse.jetty.util.resource.PathResource.resolve(PathResource.java:296)
[INFO] GCLOUD: at org.eclipse.jetty.ee11.webapp.WebAppContext.getWebInf(WebAppContext.java:760)
[INFO] GCLOUD: at com.google.appengine.tools.development.jetty.ee11.JettyContainerService.determineAppRoot(JettyContainerService.java:586)
[INFO] GCLOUD: at com.google.appengine.tools.development.jetty.ee11.JettyContainerService.initContext(JettyContainerService.java:216)
[INFO] GCLOUD: at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:280)
[INFO] GCLOUD: at com.google.appengine.tools.development.AutomaticInstanceHolder.startUp(AutomaticInstanceHolder.java:42)
[INFO] GCLOUD: at com.google.appengine.tools.development.AbstractModule.startup(AbstractModule.java:101)
[INFO] GCLOUD: at com.google.appengine.tools.development.Modules.startup(Modules.java:133)
[INFO] GCLOUD: at com.google.appengine.tools.development.DevAppServerImpl.doStart(DevAppServerImpl.java:275)
[INFO] GCLOUD: at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:228)
[INFO] GCLOUD: at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:383)
[INFO] GCLOUD: at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:58)
[INFO] GCLOUD: at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:239)
[INFO] GCLOUD: at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:230)
I’ve moved this to Issues · GoogleCloudPlatform/appengine-java-standard · GitHub which I understand is the best place to post issues like this.