scalameta / metals

Scala language server with rich IDE features 🚀

Home Page:https://scalameta.org/metals/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

exception and errors in projects after update to 1.3.0

andyczerwonka opened this issue · comments

Describe the bug

When I load up my project into 1.3.0, I see the following error.

2024.04.16 16:12:04 ERROR issues while parsing: /home/aczerwon/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/hadoop/hadoop-client-api/3.3.4/hadoop-client-api-3.3.4-sources.jar
java.lang.Exception: Unexpected symbol at word pos: '92'. Line: '      "mon.CancelDelegationTokenRequestProto\\0321." +'
	at scala.meta.internal.mtags.JavaToplevelMtags.kwOrIdent$1(JavaToplevelMtags.scala:166)
	at scala.meta.internal.mtags.JavaToplevelMtags.parseToken$1(JavaToplevelMtags.scala:225)
	at scala.meta.internal.mtags.JavaToplevelMtags.fetchToken(JavaToplevelMtags.scala:231)
	at scala.meta.internal.mtags.JavaToplevelMtags.loop(JavaToplevelMtags.scala:50)
	at scala.meta.internal.mtags.JavaToplevelMtags.indexRoot(JavaToplevelMtags.scala:36)
	at scala.meta.internal.mtags.MtagsIndexer.index(MtagsIndexer.scala:21)
	at scala.meta.internal.mtags.MtagsIndexer.index$(MtagsIndexer.scala:20)
	at scala.meta.internal.mtags.JavaToplevelMtags.index(JavaToplevelMtags.scala:12)
	at scala.meta.internal.mtags.Mtags.indexWithOverrides(Mtags.scala:74)
	at scala.meta.internal.mtags.SymbolIndexBucket.indexSource(SymbolIndexBucket.scala:130)
	at scala.meta.internal.mtags.SymbolIndexBucket.addSourceFile(SymbolIndexBucket.scala:113)
	at scala.meta.internal.mtags.SymbolIndexBucket.$anonfun$addSourceJar$2(SymbolIndexBucket.scala:80)
	at scala.collection.immutable.List.flatMap(List.scala:294)
	at scala.meta.internal.mtags.SymbolIndexBucket.$anonfun$addSourceJar$1(SymbolIndexBucket.scala:76)
	at scala.meta.internal.io.PlatformFileIO$.withJarFileSystem(PlatformFileIO.scala:87)
	at scala.meta.internal.io.FileIO$.withJarFileSystem(FileIO.scala:44)
	at scala.meta.internal.mtags.SymbolIndexBucket.addSourceJar(SymbolIndexBucket.scala:74)
	at scala.meta.internal.mtags.OnDemandSymbolIndex.$anonfun$addSourceJar$2(OnDemandSymbolIndex.scala:85)
	at scala.meta.internal.mtags.OnDemandSymbolIndex.tryRun(OnDemandSymbolIndex.scala:148)
	at scala.meta.internal.mtags.OnDemandSymbolIndex.addSourceJar(OnDemandSymbolIndex.scala:84)
	at scala.meta.internal.metals.Indexer.indexJar$1(Indexer.scala:630)
	at scala.meta.internal.metals.Indexer.addSourceJarSymbols(Indexer.scala:656)
	at scala.meta.internal.metals.Indexer.$anonfun$indexDependencySources$5(Indexer.scala:487)
	at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:619)
	at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:617)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:935)
	at scala.collection.IterableOps$WithFilter.foreach(Iterable.scala:905)
	at scala.meta.internal.metals.Indexer.$anonfun$indexDependencySources$1(Indexer.scala:478)
	at scala.meta.internal.metals.Indexer.$anonfun$indexDependencySources$1$adapted(Indexer.scala:477)
	at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:619)
	at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:617)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:935)
	at scala.meta.internal.metals.Indexer.indexDependencySources(Indexer.scala:477)
	at scala.meta.internal.metals.Indexer.$anonfun$indexWorkspace$24(Indexer.scala:396)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at scala.meta.internal.metals.TimerProvider.timedThunk(TimerProvider.scala:25)
	at scala.meta.internal.metals.Indexer.$anonfun$indexWorkspace$23(Indexer.scala:389)
	at scala.meta.internal.metals.Indexer.$anonfun$indexWorkspace$23$adapted(Indexer.scala:385)
	at scala.collection.immutable.List.foreach(List.scala:334)
	at scala.meta.internal.metals.Indexer.indexWorkspace(Indexer.scala:385)
	at scala.meta.internal.metals.Indexer.$anonfun$profiledIndexWorkspace$2(Indexer.scala:172)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at scala.meta.internal.metals.TimerProvider.timedThunk(TimerProvider.scala:25)
	at scala.meta.internal.metals.Indexer.$anonfun$profiledIndexWorkspace$1(Indexer.scala:172)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at scala.concurrent.Future$.$anonfun$apply$1(Future.scala:687)
	at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:467)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.lang.Thread.run(Thread.java:833)

I do notice:

Metals version: 1.3.0
Using coursier located at /home/aczerwon/.metals/cs
No installed java with version 17 found. Will fetch one using coursier.
Coursier: openjdk version "17" 2021-09-14
OpenJDK Runtime Environment Temurin-17+35 (build 17+35)
OpenJDK 64-Bit Server VM Temurin-17+35 (build 17+35, mixed mode, sharing)
Using Java Home: /home/aczerwon/.cache/coursier/arc/https/github.com/adoptium/temurin17-binaries/releases/download/jdk-17%252B35/OpenJDK17-jdk_x64_linux_hotspot_17_35.tar.gz/jdk-17+35 

Is 17 now required? Many of my projects are now reporting errors after the upgrade to 1.3

Expected behavior

No exception.

Operating system

Linux

Editor/Extension

VS Code

Version of Metals

1.3.0

Extra context or search terms

No response

I adjusted the JDK version used for running the Metals's server to version 11 to match that of my project. I still see that exception.

Thanks for the report, that seems to be a bug in java files indexing. JDK version won't matter here.

The issue with the JDK is that we changed the mechanism to have separate Metals JDK and we will probably drop support for 8 and then 11 soon. We created a bunch of other ways to make sure the projects properly compile with the actual JDK APIs and output versions. This is due to the fact that a number of libraries we depend on actually require at least JDK 11 and some 17 now.