Skip to content

Java compiler missing annotation warnings halt compilation on windows #7665

@spangaer

Description

@spangaer

Windows

When compiling QueryDSL 5.1.0 generated Java files (with QueryDSL on the classpath) this leads to a halting failure on Windows.

Exception when compiling 23 sources to C:\...\target\scala-2.12\classes`
[error] ## Exception when compiling 23 sources to C:\...\target\scala-2.12\classes
...
[error] Caused by: java.nio.file.InvalidPathException: Illegal char <:> at index 3: jar:file:///C:/Users/me/.ivy2/cache/com.querydsl/querydsl-core/jars/querydsl-core-5.1.0.jar!/com/querydsl/core/types/PathMetadataFactory.class
[error]         at java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:204)
[error]         at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:175)
[error]         at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
[error]         at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92)
[error]         at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:231)
[error]         at java.base/java.nio.file.Path.of(Path.java:148)
[error]         at java.base/java.nio.file.Paths.get(Paths.java:69)
[error]         at sbt.internal.inc.MappedVirtualFile$.toPath(MappedVirtualFile.scala:36)
[error]         at sbt.internal.inc.MappedFileConverter.toPath(MappedVirtualFile.scala:53)
[error]         at sbt.internal.server.BuildServerReporterImpl.toSafePath(BuildServerReporter.scala:92)
[error]         at sbt.internal.server.BuildServerReporterImpl.$anonfun$publishDiagnostic$1(BuildServerReporter.scala:169)
[error]         at sbt.internal.server.BuildServerReporterImpl.$anonfun$publishDiagnostic$1$adapted(BuildServerReporter.scala:168)
[error]         at scala.Option.foreach(Option.scala:407)
[error]         at sbt.internal.server.BuildServerReporterImpl.publishDiagnostic(BuildServerReporter.scala:168)
[error]         at sbt.internal.server.BuildServerReporter.log(BuildServerReporter.scala:66)
[error]         at sbt.internal.server.BuildServerReporter.log$(BuildServerReporter.scala:59)
[error]         at sbt.internal.server.BuildServerReporterImpl.log(BuildServerReporter.scala:74)
[error]         at sbt.internal.inc.javac.DiagnosticsReporter.report(DiagnosticsReporter.scala:60)
[error]         at jdk.compiler/com.sun.tools.javac.api.ClientCodeWrapper$WrappedDiagnosticListener.report(ClientCodeWrapper.java:784)
[error]         at jdk.compiler/com.sun.tools.javac.util.Log.writeDiagnostic(Log.java:730)
[error]         at jdk.compiler/com.sun.tools.javac.util.Log$DefaultDiagnosticHandler.report(Log.java:699)
[error]         at jdk.compiler/com.sun.tools.javac.util.Log.report(Log.java:664)
[error]         at jdk.compiler/com.sun.tools.javac.util.AbstractLog.warning(AbstractLog.java:163)
[error]         at jdk.compiler/com.sun.tools.javac.jvm.ClassReader$AnnotationDeproxy.findAccessMethod(ClassReader.java:2018)
[error]         at jdk.compiler/com.sun.tools.javac.jvm.ClassReader$AnnotationDeproxy.deproxyCompound(ClassReader.java:1995)
[error]         at jdk.compiler/com.sun.tools.javac.jvm.ClassReader$TypeAnnotationCompleter.deproxyTypeCompoundList(ClassReader.java:2244)
[error]         at jdk.compiler/com.sun.tools.javac.jvm.ClassReader$TypeAnnotationCompleter.run(ClassReader.java:2256)
[error]         at jdk.compiler/com.sun.tools.javac.comp.Annotate.flush(Annotate.java:191)
[error]         at jdk.compiler/com.sun.tools.javac.comp.Annotate.unblockAnnotations(Annotate.java:144)
[error]         at jdk.compiler/com.sun.tools.javac.comp.Annotate.enterDone(Annotate.java:157)
[error]         at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.enterDone(JavaCompiler.java:1820)
[error]         at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:1074)
[error]         at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:947)
[error]         at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
[error]         at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
[error]         at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
[error]         at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
[error]         at sbt.internal.inc.javac.LocalJavaCompiler.run(LocalJava.scala:345)
[error]         at sbt.internal.inc.javac.AnalyzingJavaCompiler.$anonfun$compile$12(AnalyzingJavaCompiler.scala:172)
[error]         at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[error]         at sbt.internal.inc.javac.AnalyzingJavaCompiler.timed(AnalyzingJavaCompiler.scala:262)
[error]         at sbt.internal.inc.javac.AnalyzingJavaCompiler.compile(AnalyzingJavaCompiler.scala:161)
[error]         at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compileJava$2(MixedAnalyzingCompiler.scala:103)
[error]         at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compileJava$2$adapted(MixedAnalyzingCompiler.scala:91)
[error]         at sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:239)
[error]         at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compileJava$1(MixedAnalyzingCompiler.scala:91)
[error]         at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[error]         at sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:248)
[error]         at sbt.internal.inc.MixedAnalyzingCompiler.compileJava(MixedAnalyzingCompiler.scala:61)
[error]         at sbt.internal.inc.MixedAnalyzingCompiler.compileJava0$1(MixedAnalyzingCompiler.scala:198)
[error]         at sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:209)
[error]         at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:534)
[error]         at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:534)
[error]         at sbt.internal.inc.Incremental$.$anonfun$apply$5(Incremental.scala:180)
[error]         at sbt.internal.inc.Incremental$.$anonfun$apply$5$adapted(Incremental.scala:178)
[error]         at sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:464)
[error]         at sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:116)
[error]         at sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
[error]         at sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
[error]         at sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:263)
[error]         at sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:419)
[error]         at sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:506)
[error]         at sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:406)
[error]         at sbt.internal.inc.Incremental$.apply(Incremental.scala:172)
[error]         at sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:534)
[error]         at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:488)
[error]         at sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332)
[error]         at sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:425)
[error]         at sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
[error]         at sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:2371)
[error]         at sbt.Defaults$.$anonfun$compileIncrementalTask$2(Defaults.scala:2321)
[error]         at sbt.internal.server.BspCompileTask$.$anonfun$compute$1(BspCompileTask.scala:31)
[error]         at sbt.internal.io.Retry$.apply(Retry.scala:47)
[error]         at sbt.internal.io.Retry$.apply(Retry.scala:29)
[error]         at sbt.internal.io.Retry$.apply(Retry.scala:24)
[error]         at sbt.internal.server.BspCompileTask$.compute(BspCompileTask.scala:31)
[error]         at sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:2319)
[error]         at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error]         at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:63)
[error]         at sbt.std.Transform$$anon$4.work(Transform.scala:69)
[error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:283)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
[error]         at sbt.Execute.work(Execute.scala:292)
[error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:283)
[error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
[error]         at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
[error]         at java.base/java.lang.Thread.run(Thread.java:1583)

Linux

On Linux it shows the true nature of the problem -> warning about Jetbrains annotations not being on the classpath.

[warn] /mnt/c/.../jar:file:/home/me/.ivy2/cache/com.querydsl/querydsl-core/jars/querydsl-core-5.1.0.jar!/com/querydsl/core/types/PathMetadataFactory.class: Cannot find annotation method 'from()' in type 'org.jetbrains.annotations.Range': class file for org.jetbrains.annotations.Range not found

The problem

So it looks like something goes bananas on Windows in the code path were the Java compiler queries the custom FS implementation while generating classpath based warnings.

Workaround

Is to avoid the warning by making sure the annotations are available during compilation.

libraryDependencies += "org.jetbrains" % "annotations" % "24.1.0" % Provided

notes

Issue observed on sbt 1.9.7, but the same for 1.10.1
Eclipse Adoptium Java 21.0.3

Metadata

Metadata

Assignees

No one assigned

    Labels

    Bugarea/ideIntelliJ or Metals integration

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions