On JDK 9, library/doc crashes with the following exception:
[error] bad constant pool tag 20 at byte 108
[error] while compiling: /localhome/doeraene/projects/scalajs/library/src/main/scala/scala/scalajs/reflect/annotation/EnableReflectiveInstantiation.scala
[error] during phase: globalPhase=terminal, enteringPhase=parser
[error] library version: version 2.12.3
[error] compiler version: version 2.12.3
[error] reconstructed args: -implicits -bootclasspath /home/doeraene/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.12.3.jar -feature -P:scalajs:sjsDefinedByDefault -P:scalajs:suppressExportDeprecations -unchecked -doc-external-doc:/home/doeraene/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.12.3.jar#http://www.scala-lang.org/api/2.12.3/ -doc-external-doc:/home/doeraene/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.12.3.jar#http://www.scala-lang.org/api/2.12.3/ -doc-external-doc:/localhome/doeraene/projects/scalajs/library/target/scala-2.12/scalajs-library_2.12-0.6.21-SNAPSHOT.jar#http://www.scala-js.org/api/scalajs-library/0.6.21-SNAPSHOT/ -classpath /home/doeraene/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.12.3.jar:/localhome/doeraene/projects/scalajs/library/target/scala-2.12/scalajs-library_2.12-0.6.21-SNAPSHOT.jar -encoding utf8 -deprecation -groups -Xfatal-warnings -d /localhome/doeraene/projects/scalajs/library/target/scala-2.12/api -Xplugin:/localhome/doeraene/projects/scalajs/compiler/target/scala-2.12/scalajs-compiler_2.12.3-0.6.21-SNAPSHOT.jar
[error]
[error] last tree to typer: Ident(<argument>)
[error] tree position: <unknown>
[error] tree tpe: scala.scalajs.reflect.InstantiatableClass
[error] symbol: <none>
[error] symbol definition: <none> (a NoSymbol)
[error] symbol package: <none>
[error] symbol owners:
[error] call site: package <root> in <none>
[error]
[error] <Cannot read source file>
scala.reflect.internal.FatalError:
bad constant pool tag 20 at byte 108
while compiling: /localhome/doeraene/projects/scalajs/library/src/main/scala/scala/scalajs/reflect/annotation/EnableReflectiveInstantiation.scala
during phase: globalPhase=terminal, enteringPhase=parser
library version: version 2.12.3
compiler version: version 2.12.3
reconstructed args: -implicits -bootclasspath /home/doeraene/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.12.3.jar -feature -P:scalajs:sjsDefinedByDefault -P:scalajs:suppressExportDeprecations -unchecked -doc-external-doc:/home/doeraene/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.12.3.jar#http://www.scala-lang.org/api/2.12.3/ -doc-external-doc:/home/doeraene/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.12.3.jar#http://www.scala-lang.org/api/2.12.3/ -doc-external-doc:/localhome/doeraene/projects/scalajs/library/target/scala-2.12/scalajs-library_2.12-0.6.21-SNAPSHOT.jar#http://www.scala-js.org/api/scalajs-library/0.6.21-SNAPSHOT/ -classpath /home/doeraene/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.12.3.jar:/localhome/doeraene/projects/scalajs/library/target/scala-2.12/scalajs-library_2.12-0.6.21-SNAPSHOT.jar -encoding utf8 -deprecation -groups -Xfatal-warnings -d /localhome/doeraene/projects/scalajs/library/target/scala-2.12/api -Xplugin:/localhome/doeraene/projects/scalajs/compiler/target/scala-2.12/scalajs-compiler_2.12.3-0.6.21-SNAPSHOT.jar
last tree to typer: Ident(<argument>)
tree position: <unknown>
tree tpe: scala.scalajs.reflect.InstantiatableClass
symbol: <none>
symbol definition: <none> (a NoSymbol)
symbol package: <none>
symbol owners:
call site: package <root> in <none>
<Cannot read source file>
at scala.reflect.internal.Reporting.abort(Reporting.scala:61)
at scala.reflect.internal.Reporting.abort$(Reporting.scala:57)
at scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:16)
at scala.tools.nsc.symtab.classfile.ClassfileParser$ConstantPool.errorBadTag(ClassfileParser.scala:366)
at scala.tools.nsc.symtab.classfile.ClassfileParser$ConstantPool.<init>(ClassfileParser.scala:191)
at scala.tools.nsc.symtab.SymbolLoaders$ClassfileLoader$classfileParser$.newConstantPool(SymbolLoaders.scala:294)
at scala.tools.nsc.symtab.classfile.ClassfileParser.$anonfun$parse$1(ClassfileParser.scala:155)
at scala.tools.nsc.symtab.classfile.ClassfileParser.parse(ClassfileParser.scala:127)
at scala.tools.nsc.symtab.SymbolLoaders$ClassfileLoader.doComplete(SymbolLoaders.scala:316)
at scala.tools.nsc.symtab.SymbolLoaders$SymbolLoader.complete(SymbolLoaders.scala:218)
at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1531)
at scala.tools.nsc.doc.base.MemberLookupBase.$anonfun$lookupInTemplate$4(MemberLookupBase.scala:149)
at scala.tools.nsc.doc.base.MemberLookupBase.$anonfun$lookupInTemplate$4$adapted(MemberLookupBase.scala:149)
at scala.collection.TraversableLike.$anonfun$filterImpl$1(TraversableLike.scala:248)
at scala.collection.immutable.List.foreach(List.scala:389)
at scala.collection.TraversableLike.filterImpl(TraversableLike.scala:247)
at scala.collection.TraversableLike.filterImpl$(TraversableLike.scala:245)
at scala.collection.AbstractTraversable.filterImpl(Traversable.scala:104)
at scala.collection.TraversableLike.filter(TraversableLike.scala:259)
at scala.collection.TraversableLike.filter$(TraversableLike.scala:259)
at scala.collection.AbstractTraversable.filter(Traversable.scala:104)
at scala.tools.nsc.doc.base.MemberLookupBase.cleanupBogusClasses$1(MemberLookupBase.scala:149)
at scala.tools.nsc.doc.base.MemberLookupBase.lookupInTemplate(MemberLookupBase.scala:160)
at scala.tools.nsc.doc.base.MemberLookupBase.lookupInTemplate(MemberLookupBase.scala:124)
at scala.tools.nsc.doc.base.MemberLookupBase.lookupInRootPackage(MemberLookupBase.scala:111)
at scala.tools.nsc.doc.base.MemberLookupBase.memberLookup(MemberLookupBase.scala:52)
at scala.tools.nsc.doc.base.MemberLookupBase.memberLookup$(MemberLookupBase.scala:48)
at scala.tools.nsc.doc.DocFactory$$anon$1.memberLookup(DocFactory.scala:68)
at scala.tools.nsc.doc.base.MemberLookupBase$$anon$1.link$lzycompute(MemberLookupBase.scala:27)
at scala.tools.nsc.doc.base.MemberLookupBase$$anon$1.link(MemberLookupBase.scala:27)
at scala.tools.nsc.doc.base.comment.EntityLink$.unapply(Body.scala:74)
at scala.tools.nsc.doc.html.Page$.inlineToStr(Page.scala:29)
at scala.tools.nsc.doc.html.Page$.$anonfun$inlineToStr$1(Page.scala:18)
at scala.tools.nsc.doc.html.Page$.$anonfun$inlineToStr$1$adapted(Page.scala:18)
at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:241)
at scala.collection.immutable.List.foreach(List.scala:389)
at scala.collection.TraversableLike.flatMap(TraversableLike.scala:241)
at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:238)
at scala.collection.immutable.List.flatMap(List.scala:352)
at scala.tools.nsc.doc.html.Page$.inlineToStr(Page.scala:18)
at scala.tools.nsc.doc.html.Page$.$anonfun$inlineToStr$1(Page.scala:18)
at scala.tools.nsc.doc.html.Page$.$anonfun$inlineToStr$1$adapted(Page.scala:18)
at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:241)
at scala.collection.immutable.List.foreach(List.scala:389)
at scala.collection.TraversableLike.flatMap(TraversableLike.scala:241)
at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:238)
at scala.collection.immutable.List.flatMap(List.scala:352)
at scala.tools.nsc.doc.html.Page$.inlineToStr(Page.scala:18)
at scala.tools.nsc.doc.html.Page$.$anonfun$inlineToStr$1(Page.scala:18)
at scala.tools.nsc.doc.html.Page$.$anonfun$inlineToStr$1$adapted(Page.scala:18)
at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:241)
at scala.collection.immutable.List.foreach(List.scala:389)
at scala.collection.TraversableLike.flatMap(TraversableLike.scala:241)
at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:238)
at scala.collection.immutable.List.flatMap(List.scala:352)
at scala.tools.nsc.doc.html.Page$.inlineToStr(Page.scala:18)
at scala.tools.nsc.doc.html.page.IndexScript.$anonfun$shortDesc$2(IndexScript.scala:90)
at scala.tools.nsc.doc.html.page.IndexScript.shortDesc(IndexScript.scala:89)
at scala.tools.nsc.doc.html.page.IndexScript.$anonfun$packages$4(IndexScript.scala:47)
at scala.tools.nsc.doc.html.page.IndexScript.$anonfun$packages$3(IndexScript.scala:41)
at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:234)
at scala.collection.Iterator.foreach(Iterator.scala:929)
at scala.collection.Iterator.foreach$(Iterator.scala:929)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1417)
at scala.collection.IterableLike.foreach(IterableLike.scala:71)
at scala.collection.IterableLike.foreach$(IterableLike.scala:70)
at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
at scala.collection.TraversableLike.map(TraversableLike.scala:234)
at scala.collection.TraversableLike.map$(TraversableLike.scala:227)
at scala.collection.AbstractTraversable.map(Traversable.scala:104)
at scala.tools.nsc.doc.html.page.IndexScript.$anonfun$packages$1(IndexScript.scala:32)
at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:234)
at scala.collection.immutable.HashMap$HashMap1.foreach(HashMap.scala:231)
at scala.collection.immutable.HashMap$HashTrieMap.foreach(HashMap.scala:462)
at scala.collection.TraversableLike.map(TraversableLike.scala:234)
at scala.collection.TraversableLike.map$(TraversableLike.scala:227)
at scala.collection.AbstractTraversable.map(Traversable.scala:104)
at scala.tools.nsc.doc.html.page.IndexScript.<init>(IndexScript.scala:28)
at scala.tools.nsc.doc.html.page.IndexScript$.apply(IndexScript.scala:152)
at scala.tools.nsc.doc.html.HtmlFactory.generate(HtmlFactory.scala:104)
at scala.tools.nsc.doc.html.Doclet.generateImpl(Doclet.scala:23)
at scala.tools.nsc.doc.doclet.Generator.generate(Generator.scala:23)
at scala.tools.nsc.doc.DocFactory.generate$1(DocFactory.scala:128)
at scala.tools.nsc.doc.DocFactory.document(DocFactory.scala:131)
at xsbt.Runner.run(ScaladocInterface.scala:26)
at xsbt.ScaladocInterface.run(ScaladocInterface.scala:10)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:107)
at sbt.compiler.AnalyzingCompiler.doc(AnalyzingCompiler.scala:73)
at sbt.compiler.AnalyzingCompiler.doc(AnalyzingCompiler.scala:68)
at sbt.Doc$$anonfun$scaladoc$1.apply(Doc.scala:23)
at sbt.Doc$$anonfun$scaladoc$1.apply(Doc.scala:23)
at sbt.RawCompileLike$$anonfun$prepare$1.apply(RawCompileLike.scala:64)
at sbt.RawCompileLike$$anonfun$prepare$1.apply(RawCompileLike.scala:56)
at sbt.RawCompileLike$$anonfun$cached$1$$anonfun$2$$anonfun$apply$1.apply(RawCompileLike.scala:49)
at sbt.RawCompileLike$$anonfun$cached$1$$anonfun$2$$anonfun$apply$1.apply(RawCompileLike.scala:47)
at sbt.Tracked$$anonfun$outputChanged$1.apply(Tracked.scala:84)
at sbt.Tracked$$anonfun$outputChanged$1.apply(Tracked.scala:79)
at sbt.RawCompileLike$$anonfun$cached$1.apply(RawCompileLike.scala:54)
at sbt.RawCompileLike$$anonfun$cached$1.apply(RawCompileLike.scala:39)
at sbt.Defaults$$anonfun$docTaskSettings$3.apply(Defaults.scala:856)
at sbt.Defaults$$anonfun$docTaskSettings$3.apply(Defaults.scala:834)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
at sbt.std.Transform$$anon$4.work(System.scala:63)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
at sbt.Execute.work(Execute.scala:237)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.base/java.lang.Thread.run(Thread.java:844)
[error] (library/compile:doc) scala.reflect.internal.FatalError:
[error] bad constant pool tag 20 at byte 108
[error] while compiling: /localhome/doeraene/projects/scalajs/library/src/main/scala/scala/scalajs/reflect/annotation/EnableReflectiveInstantiation.scala
[error] during phase: globalPhase=terminal, enteringPhase=parser
[error] library version: version 2.12.3
[error] compiler version: version 2.12.3
[error] reconstructed args: -implicits -bootclasspath /home/doeraene/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.12.3.jar -feature -P:scalajs:sjsDefinedByDefault -P:scalajs:suppressExportDeprecations -unchecked -doc-external-doc:/home/doeraene/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.12.3.jar#http://www.scala-lang.org/api/2.12.3/ -doc-external-doc:/home/doeraene/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.12.3.jar#http://www.scala-lang.org/api/2.12.3/ -doc-external-doc:/localhome/doeraene/projects/scalajs/library/target/scala-2.12/scalajs-library_2.12-0.6.21-SNAPSHOT.jar#http://www.scala-js.org/api/scalajs-library/0.6.21-SNAPSHOT/ -classpath /home/doeraene/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.12.3.jar:/localhome/doeraene/projects/scalajs/library/target/scala-2.12/scalajs-library_2.12-0.6.21-SNAPSHOT.jar -encoding utf8 -deprecation -groups -Xfatal-warnings -d /localhome/doeraene/projects/scalajs/library/target/scala-2.12/api -Xplugin:/localhome/doeraene/projects/scalajs/compiler/target/scala-2.12/scalajs-compiler_2.12.3-0.6.21-SNAPSHOT.jar
[error]
[error] last tree to typer: Ident(<argument>)
[error] tree position: <unknown>
[error] tree tpe: scala.scalajs.reflect.InstantiatableClass
[error] symbol: <none>
[error] symbol definition: <none> (a NoSymbol)
[error] symbol package: <none>
[error] symbol owners:
[error] call site: package <root> in <none>
[error]
[error] <Cannot read source file>
[error] Total time: 7 s, completed Oct 10, 2017, 10:12:42 PM
To work around this, Scaladoc generation is disabled for library on JDK 9, but we'll have to reenable it at some point.
/cc @SethTisue. Apparently this issue means that now the community build fails (see #3381).
Copying my own probably-useful comment from the other closed ticket:
Hint: the constant pool tag 20 means "package" and was introduced in JVM 9. It is not present in JVM 8.
Fixed in 1ea99ad9ad0bbf5987437a1e1ad0b784d28bd7e7.
Scala-js is green at e.g. https://scala-ci.typesafe.com/view/scala-2.12.x/job/scala-2.12.x-jdk9-integrate-community-build/210/ 馃憤
gah, this seems to have regressed, it's failing again at e.g. https://scala-ci.typesafe.com/view/scala-2.12.x/job/scala-2.12.x-jdk9-integrate-community-build/250/
not entirely sure if the regression is at your end or whether I might somehow have something wrong here:
# on Java 9+, the Scala.js build expects this property to be set.
# * note the kludgy specificity here, this will need further work
# to be more flexible with different JVMs.
# * note that for `java -version`, Oracle and OpenJDK print different
# things, so e.g. we might see:
# openjdk version "9-Debian"
# java version "9.0.4"
# and lord knows what else, so matching on version strings must be done carefully
# * note that in the OpenJDK case it would be more correct to
# use java9-rt-ext-oracle_corporation_9_debian, but it seems
# highly unlikely that the difference would matter.
# * we have no actual guarantee that rt.jar is present in the given location.
# if you've ever run sbt yourself on your machine on the JDK version in question,
# sbt probably put the jar in the right place, maybe? if not, you can always
# manually put it there yourself. that's what I did on our Jenkins workers
if [[ `java -version 2>&1 | head -n 1` == *\"9* ]]; then
export SCALA_JS_OPTIONS=-Dscala.ext.dirs=$HOME/.sbt/0.13/java9-rt-ext-oracle_corporation_9_0_4
elif [[ `java -version 2>&1 | head -n 1` == *\"10* ]]; then
export SCALA_JS_OPTIONS=-Dscala.ext.dirs=$HOME/.sbt/0.13/java9-rt-ext-oracle_corporation_10_0_1
else
export SCALA_JS_OPTIONS=-Ddummy.ignore=nope
fi
or here:
${vars.base} {
name: "scala-js"
uri: ${vars.uris.scala-js-uri}
extra.options: [
// hopefully avoid intermittent OutOfMemoryErrors with default 1.5G heap?
"-Xmx2048m"
// Java 8 vs 9 stuff; see run.sh
${SCALA_JS_OPTIONS}
]
// not really sure how this list was arrived at
extra.projects: [ "io", "logging", "linker", "testSuite" ]
// exclude it here because we build it separately in scala-js-stubs
extra.exclude: ["stubs"]
extra.commands: ${vars.default-commands} [
// - We disable source map tests to save ourselves a `npm install source-map-support` on the workers.
// Although only `testSuite` actually has tests, dbuild will try to run the tests for all projects
// that `testSuite` depends on (transitively), so we need to set it in a bunch of places.
"set Seq(library, testInterface, jUnitRuntime, testSuite).map(p => jsEnv in p := new org.scalajs.jsenv.nodejs.NodeJSEnv(org.scalajs.jsenv.nodejs.NodeJSEnv.Config().withExecutable(\""${vars.node}"\").withSourceMap(false)))"
"set MyScalaJSPlugin.wantSourceMaps in testSuite := false"
]
}
Could you try removing your SCALAJS_OPTIONS altogether. We're supposed to take care of this stuff ourselves since https://github.com/scala-js/scala-js/pull/3385, but I think your workaround defeats our workaround ...
yup, all good over at https://github.com/scala/community-builds/pull/750 !