com-lihaoyi / Ammonite

Scala Scripting
http://ammonite.io
MIT License
2.61k stars 368 forks source link

scala.reflect.internal.FatalError: bad constant pool index: 0 at pos #1427

Closed jiachengdb closed 7 months ago

jiachengdb commented 7 months ago

I installed amm via

sudo sh -c '(echo "#!/usr/bin/env sh" && curl -L https://github.com/com-lihaoyi/Ammonite/releases/download/3.0.0-M0/2.12-3.0.0-M0) > /usr/local/bin/amm && chmod +x /usr/local/bin/amm' && amm

On my Macbook, I don't have Scala 2.12 installed on the default path.

The install instruction on https://ammonite.io/#OlderScalaVersions does not say I need to install scala.

which java
/usr/bin/java

java --version
openjdk 21.0.2 2024-01-16
OpenJDK Runtime Environment (build 21.0.2+13-58)
OpenJDK 64-Bit Server VM (build 21.0.2+13-58, mixed mode, sharing)

scala
-bash: scala: command not found

scalac
-bash: scalac: command not found

All commands fail with the following error.

Welcome to the Ammonite Repl 3.0.0-M0 (Scala 2.12.17 Java 21.0.2)
@ val s = 1
scala.reflect.internal.FatalError:
  bad constant pool index: 0 at pos: 48461
     while compiling: <no file>
        during phase: globalPhase=<no phase>, enteringPhase=<some phase>
     library version: version 2.12.17
    compiler version: version 2.12.17
  reconstructed args: -nowarn -Xmaxwarns 0 -Yresolve-term-conflict:object

  last tree to typer: EmptyTree
       tree position: <unknown>
            tree tpe: <notype>
              symbol: null
           call site: <none> in <none>

== Source file context for tree position ==

  scala.reflect.internal.Reporting.abort(Reporting.scala:69)
  scala.reflect.internal.Reporting.abort$(Reporting.scala:65)
  scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:28)
  scala.tools.nsc.symtab.classfile.ClassfileParser$ConstantPool.errorBadIndex(ClassfileParser.scala:385)
  scala.tools.nsc.symtab.classfile.ClassfileParser$ConstantPool.getExternalName(ClassfileParser.scala:249)
  scala.tools.nsc.symtab.classfile.ClassfileParser.readParamNames$1(ClassfileParser.scala:828)
  scala.tools.nsc.symtab.classfile.ClassfileParser.parseAttribute$1(ClassfileParser.scala:834)
  scala.tools.nsc.symtab.classfile.ClassfileParser.$anonfun$parseAttributes$7(ClassfileParser.scala:908)
  scala.tools.nsc.symtab.classfile.ClassfileParser.parseAttributes(ClassfileParser.scala:908)
  scala.tools.nsc.symtab.classfile.ClassfileParser.parseMethod(ClassfileParser.scala:611)
  scala.tools.nsc.symtab.classfile.ClassfileParser.$anonfun$parseClass$4(ClassfileParser.scala:534)
  scala.tools.nsc.symtab.classfile.ClassfileParser.parseClass(ClassfileParser.scala:534)
  scala.tools.nsc.symtab.classfile.ClassfileParser.$anonfun$parse$2(ClassfileParser.scala:160)
  scala.tools.nsc.symtab.classfile.ClassfileParser.$anonfun$parse$1(ClassfileParser.scala:146)
  scala.tools.nsc.symtab.classfile.ClassfileParser.parse(ClassfileParser.scala:129)
  scala.tools.nsc.symtab.SymbolLoaders$ClassfileLoader.doComplete(SymbolLoaders.scala:343)
  scala.tools.nsc.symtab.SymbolLoaders$SymbolLoader.complete(SymbolLoaders.scala:250)
  scala.reflect.internal.Symbols$Symbol.completeInfo(Symbols.scala:1542)
  scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1514)
  scala.reflect.internal.Definitions.scala$reflect$internal$Definitions$$enterNewMethod(Definitions.scala:49)
  scala.reflect.internal.Definitions$DefinitionsClass.String_$plus$lzycompute(Definitions.scala:1134)
  scala.reflect.internal.Definitions$DefinitionsClass.String_$plus(Definitions.scala:1134)
  scala.reflect.internal.Definitions$DefinitionsClass.syntheticCoreMethods$lzycompute(Definitions.scala:1438)
  scala.reflect.internal.Definitions$DefinitionsClass.syntheticCoreMethods(Definitions.scala:1420)
  scala.reflect.internal.Definitions$DefinitionsClass.symbolsNotPresentInBytecode$lzycompute(Definitions.scala:1450)
  scala.reflect.internal.Definitions$DefinitionsClass.symbolsNotPresentInBytecode(Definitions.scala:1450)
  scala.reflect.internal.Definitions$DefinitionsClass.init(Definitions.scala:1506)
  scala.tools.nsc.Global$Run.<init>(Global.scala:1214)
  ammonite.compiler.Compiler$$anon$1.<init>(Compiler.scala:243)
  ammonite.compiler.Compiler$.apply(Compiler.scala:108)
  ammonite.compiler.CompilerLifecycleManager.init(CompilerLifecycleManager.scala:96)
  ammonite.compiler.CompilerLifecycleManager.preprocess(CompilerLifecycleManager.scala:64)
  ammonite.interp.Interpreter.$anonfun$processLine$4(Interpreter.scala:260)
  ammonite.util.Res$Success.flatMap(Res.scala:62)
  ammonite.interp.Interpreter.$anonfun$processLine$2(Interpreter.scala:253)
  ammonite.util.Catching.flatMap(Res.scala:115)
  ammonite.interp.Interpreter.processLine(Interpreter.scala:252)
  ammonite.repl.Repl.$anonfun$action$8(Repl.scala:199)
  ammonite.util.Res$Success.flatMap(Res.scala:62)
  ammonite.repl.Repl.$anonfun$action$4(Repl.scala:186)
  ammonite.repl.Scoped.$anonfun$flatMap$1(Signaller.scala:45)
  ammonite.repl.Signaller.apply(Signaller.scala:28)
  ammonite.repl.Scoped.flatMap(Signaller.scala:45)
  ammonite.repl.Scoped.flatMap$(Signaller.scala:45)
  ammonite.repl.Signaller.flatMap(Signaller.scala:16)
  ammonite.repl.Repl.$anonfun$action$2(Repl.scala:178)
  ammonite.util.Catching.flatMap(Res.scala:115)
  ammonite.repl.Repl.action(Repl.scala:170)
  ammonite.repl.Repl.loop$1(Repl.scala:212)
  ammonite.repl.Repl.run(Repl.scala:227)
  ammonite.Main.$anonfun$run$1(Main.scala:236)
  scala.Option.getOrElse(Option.scala:189)
  ammonite.Main.run(Main.scala:224)
  ammonite.MainRunner.$anonfun$runRepl$1(MainRunner.scala:72)
  ammonite.MainRunner.watchLoop(MainRunner.scala:53)
  ammonite.MainRunner.runRepl(MainRunner.scala:72)
  ammonite.AmmoniteMain$.main0(AmmoniteMain.scala:99)
  ammonite.AmmoniteMain$.main(AmmoniteMain.scala:38)
  ammonite.AmmoniteMain.main(AmmoniteMain.scala)
JurajBurian commented 7 months ago

I have the same issue. It is independent of Scala version used by Ammonite (scala is builded in). Problem, is Java version. For 21 amm is not working, for 11 amm is fully functional. From the exception I can see that problem is in scala compiler. Error like this is mentiond on several palaces, here is an example: https://stackoverflow.com/questions/77160494/scala-java-lang-noclassdeffounderror-could-not-initialize-class-sbt-internal-p

lefou commented 7 months ago

I think you need an Ammonite version that uses at least Scala 2.12.18. Until we release Ammonite 3.0.0-M1, which will take some more days, you can use one of the more recent snapshots, e.g. 3.0.0-M0-71-1e75159e.

> cs complete-dep com.lihaoyi:ammonite_2.12.18:
2.5.8-1-837c3adb
2.5.8-2-159ff8f6
2.5.9
2.5.9-1-6321610a
2.5.9-2-7633e640
2.5.9-3-feb1f0c6
2.5.11
3.0.0-M0-29-9e3ddc8e
3.0.0-M0-30-1634c52a
3.0.0-M0-31-80deef08
3.0.0-M0-32-96e851cb
3.0.0-M0-33-94c5ce87
3.0.0-M0-34-2720f120
3.0.0-M0-35-e445eb40
3.0.0-M0-36-74c8477d
3.0.0-M0-37-fc285279
3.0.0-M0-38-96641965
3.0.0-M0-39-ba724263
3.0.0-M0-40-ab5f8a2a
3.0.0-M0-41-2dacc9ef
3.0.0-M0-42-55d908ea
3.0.0-M0-47-cab76b4c
3.0.0-M0-48-8b1a5588
3.0.0-M0-49-151446c5
3.0.0-M0-52-d2acc162
3.0.0-M0-53-084f7f4e
3.0.0-M0-55-8ef21714
3.0.0-M0-56-1bcbe7f6
3.0.0-M0-58-9ccdff7c
3.0.0-M0-59-cdeaa580
3.0.0-M0-60-89836cd8
3.0.0-M0-61-fcbebad5
3.0.0-M0-62-e40dcc07
3.0.0-M0-63-18105caa
3.0.0-M0-65-d93dec88
3.0.0-M0-66-a7c0365c
3.0.0-M0-67-b3fea31f
3.0.0-M0-68-50d39ec4
3.0.0-M0-69-8d1e4600
3.0.0-M0-70-45c2ae79
3.0.0-M0-71-1e75159e
lefou commented 7 months ago

Ammonite 3.0.0-M1 is released.

jiachengdb commented 7 months ago

Verified Ammonite 3.0.0-M1 works