Quarkus: Windows username with space gives errors on native build

Created on 2 Nov 2020  路  3Comments  路  Source: quarkusio/quarkus

When using Windows with space on username there's 2 errors on different steps on mvn package.
the command that I ran is:
mvn -Pnative package

Expected behavior
Successfully generate my native image.

Actual behavior
Breaks on 2 steps of ' io.quarkus:quarkus-maven-plugin:1.9.1.Final:build'
The first step that breaks is
' io.quarkus.vertx.http.deployment.VertxHttpProcessor#registerExchangeAttributeBuilders'
The entire message on this error is:

Failed to execute goal io.quarkus:quarkus-maven-plugin:1.9.1.Final:build (default) on project qa-tracker-api: Failed to build quarkus application: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[ERROR] [error]: Build step io.quarkus.vertx.http.deployment.VertxHttpProcessor#registerExchangeAttributeBuilders threw an exception: java.nio.file.FileSystemNotFoundException: C:\Users\Lucca%2520Prado.m2\repository\io\quarkus\quarkus-vertx-http\1.9.1.Final\quarkus-vertx-http-1.9.1.Final.jar
[ERROR] at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.(ZipFileSystem.java:118)
[ERROR] at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:109)
[ERROR] at java.base/java.nio.file.FileSystems.newFileSystem(FileSystems.java:337)
[ERROR] at java.base/java.nio.file.FileSystems.newFileSystem(FileSystems.java:286)
[ERROR] at io.quarkus.bootstrap.util.ZipUtils.newFileSystem(ZipUtils.java:160)
[ERROR] at io.quarkus.vertx.http.deployment.VertxHttpProcessor.registerExchangeAttributeBuilders(VertxHttpProcessor.java:221)
[ERROR] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR] at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ERROR] at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:936)
[ERROR] at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
[ERROR] at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
[ERROR] at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046)
[ERROR] at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578)
[ERROR] at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1426)
[ERROR] at java.base/java.lang.Thread.run(Thread.java:834)
[ERROR] at org.jboss.threads.JBossThread.run(JBossThread.java:479)

The second step that break (after bypassing the first) is
'io.quarkus.container.image.deployment.ContainerImageProcessor#publishImageInfo'
The entire message on this error is:

[ERROR] Failed to execute goal io.quarkus:quarkus-maven-plugin:1.9.1.Final:build (default) on project qa-tracker-api: Failed to build quarkus application: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[ERROR] [error]: Build step io.quarkus.container.image.deployment.ContainerImageProcessor#publishImageInfo threw an exception: java.lang.IllegalArgumentException: The supplied combination of container-image group 'lucca prado' and name 'qa-tracker-api' is invalid
[ERROR] at io.quarkus.container.image.deployment.ContainerImageProcessor.publishImageInfo(ContainerImageProcessor.java:47)
[ERROR] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR] at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ERROR] at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:936)
[ERROR] at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
[ERROR] at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
[ERROR] at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2046)
[ERROR] at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1578)
[ERROR] at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
[ERROR] at java.base/java.lang.Thread.run(Thread.java:834)
[ERROR] at org.jboss.threads.JBossThread.run(JBossThread.java:479)

To Reproduce
Steps to reproduce the behavior:

  1. Create windows user with space on name
    Ex: "Lucca Prado"
  2. Configure Java and GraalVm on it
  3. Open an Quarkus project
  4. Run mvn -Pnative package

Screenshots
(If applicable, add screenshots to help explain your problem.)

Environment (please complete the following information):

  • Output of uname -a or ver:
    MINGW64_NT-10.0 TARDIS 2.11.2(0.329/5/3) 2018-11-10 14:38 x86_64 Msys ----- Microsoft Windows [vers茫o 10.0.18363.1139]
  • Output of java -version:
    openjdk version "11.0.8" 2020-07-14
    OpenJDK Runtime Environment GraalVM CE 20.2.0 (build 11.0.8+10-jvmci-20.2-b03)
    OpenJDK 64-Bit Server VM GraalVM CE 20.2.0 (build 11.0.8+10-jvmci-20.2-b03, mixed mode, sharing)
  • GraalVM version (if different from Java): GraalVM CE 20.2.0
  • Quarkus version or git rev: 1.9.1.Final
  • Build tool (ie. output of mvnw --version or gradlew --version):
    Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T15:41:47-03:00)
    Maven home: C:Program Files\Maven\apache-maven-3.6.0\bin..
    Java version: 11.0.8, vendor: GraalVM Community, runtime: C:Program Files\graalvm-ce-java11-20.2.0
    Default locale: pt_BR, platform encoding: Cp1252
    OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
  • Username: 'Lucca Prado'

Additional context
To bypass the first error i changed the settings.xml in my .m2 folder to one that don't have , but would be nice if this step escaped the space char correctly.
The second one I guess that I can override it, but, would be really nice if the space on username could be changed to "-".

enwindows kinbug

Most helpful comment

Hello, this problem is indeed caused by space in the path and I am experiencing it too in my Windows CI. I had to workaround it like this in my .m2/settings.xml:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository>C:\tmp\.m2\repository</localRepository>
</settings>

Perhaps @maxandersen has the fix handy from the top of his head as he surely hit something like that with JBang at some point...

All 3 comments

Hello, this problem is indeed caused by space in the path and I am experiencing it too in my Windows CI. I had to workaround it like this in my .m2/settings.xml:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository>C:\tmp\.m2\repository</localRepository>
</settings>

Perhaps @maxandersen has the fix handy from the top of his head as he surely hit something like that with JBang at some point...

I bet it's not just a windows issue.

Any path with space would fail on Linux and Mac too is my guess.

Fix is to always quote arguments when passing them to command line calls.

No silver bullet :)

@Karm I did like you to workaround as I said on Additional context. But in my opinion this isn't the best way as we are duplicating the downloaded artifacts on computer.

I bet it's not just a windows issue.

Any path with space would fail on Linux and Mac too is my guess.

Fix is to always quote arguments when passing them to command line calls.

No silver bullet :)

I'll try on my Ubuntu Vm to update this issue saying that it isn't only on windows.

Was this page helpful?
0 / 5 - 0 ratings