spring-projects / sts4

The next generation of tooling for Spring Boot, including support for Cloud Foundry manifest files, Concourse CI pipeline definitions, BOSH deployment manifests, and more... - Available for Eclipse, Visual Studio Code, and Theia
https://spring.io/tools
Eclipse Public License 1.0
873 stars 206 forks source link

exception thrown under the hood when file URL protocol is unknown #1192

Closed martinlippert closed 8 months ago

martinlippert commented 8 months ago

Found this while scanning the log files of the language server:

13:47:11.988 [Reconciler-1] ERROR o.s.i.v.b.j.r.JdtReconciler - 
java.nio.file.FileSystemNotFoundException: Provider "jdt" not installed
    at java.base/java.nio.file.Path.of(Unknown Source)
    at java.base/java.nio.file.Paths.get(Unknown Source)
    at org.springframework.ide.vscode.boot.java.reconcilers.NoAutowiredOnConstructorReconciler$1.visit(NoAutowiredOnConstructorReconciler.java:54)
    at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:482)
    at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:3214)
    at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:3285)
    at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:258)
    at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:3214)
    at org.springframework.ide.vscode.boot.java.reconcilers.NoAutowiredOnConstructorReconciler.reconcile(NoAutowiredOnConstructorReconciler.java:50)
    at org.springframework.ide.vscode.boot.java.reconcilers.JdtReconciler.reconcile(JdtReconciler.java:87)
    at org.springframework.ide.vscode.boot.java.reconcilers.JdtReconciler.lambda$reconcile$0(JdtReconciler.java:70)
    at org.springframework.ide.vscode.boot.java.utils.CompilationUnitCache.withCompilationUnit(CompilationUnitCache.java:223)
    at org.springframework.ide.vscode.boot.java.reconcilers.JdtReconciler.reconcile(JdtReconciler.java:67)
    at org.springframework.ide.vscode.boot.java.handlers.BootJavaReconcileEngine.reconcile(BootJavaReconcileEngine.java:74)
    at org.springframework.ide.vscode.commons.languageserver.composable.CompositeLanguageServerComponents$1.reconcile(CompositeLanguageServerComponents.java:81)
    at org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer.lambda$validateWith$12(SimpleLanguageServer.java:754)
    at reactor.core.publisher.MonoRunnable.subscribe(MonoRunnable.java:49)
    at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76)
    at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:241)
    at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:204)
    at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onComplete(FluxOnAssembly.java:549)
    at reactor.core.publisher.MonoPublishOn$PublishOnSubscriber.run(MonoPublishOn.java:182)
    at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
    at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)

Looks like the reconciler is trying to reconcile a file that is not on the file system, but coming from JDT (maybe a source file dynamically fetched for a class of a JAR on the classpath).

BoykoAlex commented 8 months ago

Seems to me that we should not attempt to reconcile anything but docs with URIs with file scheme... Or do you think this is too limiting?

BoykoAlex commented 8 months ago

Should be fixed with 2ad9cf1ff365d6a3b80045fa096a3f9b9940dfbe