szeiger / ornate

A Markdown-based site generator
http://szeiger.github.io/ornate-doc/
Other
80 stars 12 forks source link

HighlightJS Nashorn exception in JRE8 #5

Open jvican opened 7 years ago

jvican commented 7 years ago

Running ornate in JRE8 produces the following stack trace:

[I]     c.n.o.PageParser: Parsing 6 source files
[I]      c.n.ornate.Main: Processing site
[I]      c.n.ornate.Main: Rendering site
[E] ghlightJSHighlighter: Error running highlight.js
javax.script.ScriptException: TypeError: [object Object] is not an Object in <eval> at line number 541 at column number 8
    at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:455)
    at jdk.nashorn.api.scripting.NashornScriptEngine.invokeImpl(NashornScriptEngine.java:387)
    at jdk.nashorn.api.scripting.NashornScriptEngine.invokeMethod(NashornScriptEngine.java:196)
    at com.novocode.ornate.js.NashornSupport$class.call(NashornSupport.scala:74)
    at com.novocode.ornate.highlight.HighlightJSHighlighter.call(HighlightJSHighlighter.scala:14)
    at com.novocode.ornate.highlight.HighlightJSHighlighter.highlightTextAsHTML(HighlightJSHighlighter.scala:71)
    at com.novocode.ornate.theme.HtmlTheme$$anonfun$fencedCodeBlockRenderer$1.apply(HtmlTheme.scala:109)
    at com.novocode.ornate.theme.HtmlTheme$$anonfun$fencedCodeBlockRenderer$1.apply(HtmlTheme.scala:106)
    at com.novocode.ornate.commonmark.SimpleHtmlNodeRenderer$$anon$1.render(SimpleHtmlNodeRenderer.scala:12)
    at org.commonmark.html.HtmlRenderer$MainNodeRenderer.render(HtmlRenderer.java:245)
    at org.commonmark.html.renderer.CoreNodeRenderer.visitChildren(CoreNodeRenderer.java:239)
    at org.commonmark.html.renderer.CoreNodeRenderer.visit(CoreNodeRenderer.java:155)
    at org.commonmark.node.ListItem.accept(ListItem.java:7)
    at org.commonmark.html.renderer.CoreNodeRenderer.render(CoreNodeRenderer.java:49)
    at org.commonmark.html.HtmlRenderer$MainNodeRenderer.render(HtmlRenderer.java:245)
    at org.commonmark.html.renderer.CoreNodeRenderer.visitChildren(CoreNodeRenderer.java:239)
    at org.commonmark.html.renderer.CoreNodeRenderer.renderListBlock(CoreNodeRenderer.java:258)
    at org.commonmark.html.renderer.CoreNodeRenderer.visit(CoreNodeRenderer.java:167)
    at org.commonmark.node.OrderedList.accept(OrderedList.java:10)
    at org.commonmark.html.renderer.CoreNodeRenderer.render(CoreNodeRenderer.java:49)
    at org.commonmark.html.HtmlRenderer$MainNodeRenderer.render(HtmlRenderer.java:245)
    at org.commonmark.html.renderer.CoreNodeRenderer.visitChildren(CoreNodeRenderer.java:239)
    at org.commonmark.html.renderer.CoreNodeRenderer.visit(CoreNodeRenderer.java:155)
    at org.commonmark.node.ListItem.accept(ListItem.java:7)
    at org.commonmark.html.renderer.CoreNodeRenderer.render(CoreNodeRenderer.java:49)
    at org.commonmark.html.HtmlRenderer$MainNodeRenderer.render(HtmlRenderer.java:245)
    at org.commonmark.html.renderer.CoreNodeRenderer.visitChildren(CoreNodeRenderer.java:239)
    at org.commonmark.html.renderer.CoreNodeRenderer.renderListBlock(CoreNodeRenderer.java:258)
    at org.commonmark.html.renderer.CoreNodeRenderer.visit(CoreNodeRenderer.java:167)
    at org.commonmark.node.OrderedList.accept(OrderedList.java:10)
    at org.commonmark.html.renderer.CoreNodeRenderer.render(CoreNodeRenderer.java:49)
    at org.commonmark.html.HtmlRenderer$MainNodeRenderer.render(HtmlRenderer.java:245)
    at org.commonmark.html.renderer.CoreNodeRenderer.visitChildren(CoreNodeRenderer.java:239)
    at org.commonmark.html.renderer.CoreNodeRenderer.visit(CoreNodeRenderer.java:55)
    at org.commonmark.node.Document.accept(Document.java:7)
    at org.commonmark.html.renderer.CoreNodeRenderer.render(CoreNodeRenderer.java:49)
    at org.commonmark.html.HtmlRenderer$MainNodeRenderer.render(HtmlRenderer.java:245)
    at org.commonmark.html.HtmlRenderer.render(HtmlRenderer.java:60)
    at org.commonmark.html.HtmlRenderer.render(HtmlRenderer.java:71)
    at com.novocode.ornate.theme.HtmlTheme$PageModelImpl.<init>(HtmlTheme.scala:175)
    at com.novocode.ornate.theme.HtmlTheme$$anonfun$render$1.apply(HtmlTheme.scala:243)
    at com.novocode.ornate.theme.HtmlTheme$$anonfun$render$1.apply(HtmlTheme.scala:227)
    at scala.collection.Iterator$class.foreach(Iterator.scala:893)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
    at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
    at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
    at com.novocode.ornate.theme.HtmlTheme.render(HtmlTheme.scala:227)
    at com.novocode.ornate.Main$.run(Main.scala:33)
    at com.novocode.ornate.Main$.runToStatus(Main.scala:77)
    at com.novocode.ornate.Main.runToStatus(Main.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.novocode.ornate.sbtplugin.OrnatePlugin$$anonfun$ornateTask$1.apply(OrnatePlugin.scala:62)
    at com.novocode.ornate.sbtplugin.OrnatePlugin$$anonfun$ornateTask$1.apply(OrnatePlugin.scala:39)
    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:226)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
    at sbt.Execute.work(Execute.scala:235)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: jdk.nashorn.internal.runtime.ECMAException: TypeError: [object Object] is not an Object
    at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)
    at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:213)
    at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:185)
    at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:172)
    at jdk.nashorn.internal.objects.Global.checkObject(Global.java:1673)
    at jdk.nashorn.internal.objects.NativeObject.create(NativeObject.java:261)
    at jdk.nashorn.internal.scripts.Script$Recompilation$61$12886AA$\^eval\_.L:1$L:30$highlight$startNewMode(node_modules/highlight.js/lib/highlight.js:426)
    at jdk.nashorn.internal.scripts.Script$Recompilation$56$13068AA$\^eval\_.L:1$L:30$highlight$processLexeme(node_modules/highlight.js/lib/highlight.js:451)
    at jdk.nashorn.internal.scripts.Script$Recompilation$43$9774AAZA$\^eval\_.L:1$L:30$highlight(node_modules/highlight.js/lib/highlight.js:519)
    at jdk.nashorn.internal.scripts.Script$Recompilation$42$16955AJA$\^eval\_.L:1$L:30$highlightAuto$L:564(node_modules/highlight.js/lib/highlight.js:565)
    at jdk.nashorn.internal.objects.NativeArray$9.forEach(NativeArray.java:1604)
    at jdk.nashorn.internal.runtime.arrays.IteratorAction.apply(IteratorAction.java:110)
    at jdk.nashorn.internal.objects.NativeArray.forEach(NativeArray.java:1607)
    at jdk.nashorn.internal.scripts.Script$Recompilation$40$16706AA$\^eval\_.L:1$L:30$highlightAuto(node_modules/highlight.js/lib/highlight.js:564)
    at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:640)
    at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:229)
    at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:387)
    at jdk.nashorn.api.scripting.ScriptObjectMirror.call(ScriptObjectMirror.java:110)
    at jdk.nashorn.api.scripting.ScriptObjectMirror.callMember(ScriptObjectMirror.java:194)
    at jdk.nashorn.api.scripting.NashornScriptEngine.invokeImpl(NashornScriptEngine.java:381)
    ... 71 common frames omitted
java.lang.RuntimeException: Ornate run failed with status code 1
    at com.novocode.ornate.sbtplugin.OrnatePlugin$$anonfun$ornateTask$1.apply(OrnatePlugin.scala:63)
    at com.novocode.ornate.sbtplugin.OrnatePlugin$$anonfun$ornateTask$1.apply(OrnatePlugin.scala:39)
    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:226)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
    at sbt.Execute.work(Execute.scala:235)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Fortunately, running this on JDK8 works fine. This error may be caused because you're accessing a JS object and not a Java object?

Related issue: https://bugs.openjdk.java.net/browse/JDK-8154720

szeiger commented 7 years ago

This is probably a Java bug. Which version of the JRE and JDK did you use? You need something like u100+ of Java 8, earlier releases (including the default Java 8 on Travis CI) don't work.

sjrd commented 7 years ago

I got the same problem on Windows with:

>java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
szeiger commented 7 years ago

Hm, either they changed something again or it's really a JRE vs JDK thing (which seems unlikely). I'll have to update my Java installation and investigate.