java.nio.file.InvalidPathException:索引 0 处的非法字符 <">:"C:\Program Files\Git\bin\\cl.exe 在 java.base/sun.nio.fs.WindowsPathParser.normalize

java.nio.file.InvalidPathException: Illegal char <"> at index 0: "C:\Program Files\Git\bin\\cl.exe at java.base/sun.nio.fs.WindowsPathParser.normalize

我想在我的 Windows 10 家用 64 位计算机上将 Quarkus 项目编译为本机,使用以下命令:

.\mvnw package -Pnative

电脑安装了GraalVM 21.3.0,GRAALVM_HOME、JAVA_HOME和PATH都设置好了。本机映像已安装。它还通过 WSL2 运行 Docker。理论上应该都设置好了。相反,我得到这个错误,使用一个只安装了几个扩展的基本项目。项目使用 Maven 作为包管理器。

Fatal error:java.nio.file.InvalidPathException: Illegal char <"> at index 0: "C:\Program Files\Git\bin\cl.exe
        at java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
        at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
        at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
        at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92)
        at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:229)
        at java.base/java.nio.file.Path.of(Path.java:147)
        at java.base/java.nio.file.Paths.get(Paths.java:69)
        at com.oracle.svm.hosted.c.codegen.CCompilerInvoker.lambda$lookupSearchPath(CCompilerInvoker.java:497)
        at java.base/java.util.stream.ReferencePipeline.accept(ReferencePipeline.java:195)
        at java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
        at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
        at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543)
        at com.oracle.svm.hosted.c.codegen.CCompilerInvoker.lookupSearchPath(CCompilerInvoker.java:499)
        at com.oracle.svm.hosted.c.codegen.CCompilerInvoker.getCCompilerPath(CCompilerInvoker.java:509)
        at com.oracle.svm.hosted.c.codegen.CCompilerInvoker.getCCompilerInfo(CCompilerInvoker.java:356)
        at com.oracle.svm.hosted.c.codegen.CCompilerInvoker.<init>(CCompilerInvoker.java:70)
        at com.oracle.svm.hosted.c.codegen.CCompilerInvoker$WindowsCCompilerInvoker.<init>(CCompilerInvoker.java:110)
        at com.oracle.svm.hosted.c.codegen.CCompilerInvoker.create(CCompilerInvoker.java:84)
        at com.oracle.svm.hosted.NativeImageGenerator.setupNativeImage(NativeImageGenerator.java:864)
        at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:527)
        at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:488)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:403)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:569)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:122)
        at com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus.main(NativeImageGeneratorRunner.java:599)

到目前为止我尝试过的是检查 PATH 环境变量,特别是进入 Git 目录的变量,还尝试在 IntelliJ 中搜索项目搜索树,但没有成功。如果我能找到问题所在,似乎很容易解决。有什么想法吗?

提前致谢!

和之前很多次一样,我从终端收到的错误消息往往不是很有用。

我最初尝试做原生编译的时候,看过一个教程,讲师使用Mac作为他的默认开发环境。

Windows还有一个额外的步骤,在此处描述: https://quarkus.io/guides/building-native-image#producing-a-native-executable

基本上,我需要使用 Windows 10 SDK 安装 Visual Studio 2022。我安装了 Visual Studio 2017 版本,但补丁太低,我缺少磁盘 space,无法在 C: 驱动器的安装位置更新它。

安装后,我必须打开 x64 Native Tools 命令提示符(开始 > Visual Studio 2022 > x64 Native Tools 命令提示符)。该命令在常规 Powershell 或 CMD 中不起作用。编译仅在重新启动计算机后才成功 - 在此之前我遇到了错误 c1083。

现在我有一个 51 MB 的可执行文件。