Kirk True created CASSANDRA-7430:
------------------------------------
Summary: generate-eclipse-files target on JDK 8 causes
ReferenceError: "importClass" is not defined
Key: CASSANDRA-7430
URL: https://issues.apache.org/jira/browse/CASSANDRA-7430
Project: Cassandra
Issue Type: Bug
Environment: java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
Reporter: Kirk True
If I run {{ant generate-eclipse-files}} under JDK 8, I get this error:
{noformat}
BUILD FAILED
/Users/kirk/dev/cassandra/build.xml:1449: javax.script.ScriptException:
ReferenceError: "importClass" is not defined in <eval> at line number 2
at
jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:564)
at
jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:548)
at
jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:528)
at
jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:524)
at
jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:194)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
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:483)
at org.apache.tools.ant.util.ReflectUtil.invoke(ReflectUtil.java:108)
at
org.apache.tools.ant.util.ReflectWrapper.invoke(ReflectWrapper.java:81)
at
org.apache.tools.ant.util.optional.JavaxScriptRunner.evaluateScript(JavaxScriptRunner.java:103)
at
org.apache.tools.ant.util.optional.JavaxScriptRunner.executeScript(JavaxScriptRunner.java:67)
at org.apache.tools.ant.taskdefs.optional.Script.execute(Script.java:52)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.Main.runBuild(Main.java:851)
at org.apache.tools.ant.Main.startAnt(Main.java:235)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: <eval>:2 ReferenceError: "importClass" is not defined
at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:56)
at
jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:318)
at
jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:290)
at
jdk.nashorn.api.scripting.NashornScriptEngine.__noSuchProperty__(NashornScriptEngine.java:274)
at
jdk.nashorn.internal.scripts.Script$engine._L35(nashorn:engine/resources/engine.js:37)
at jdk.nashorn.internal.scripts.Script$\^eval\_.runScript(<eval>:2)
at
jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:498)
at
jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:206)
at
jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:378)
at
jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:546)
... 29 more
{noformat}
Apparently this is due to changes with the new Nashorn ECMAScript engine in the
new JDK.
According to
http://stackoverflow.com/questions/22503100/java-8-javascript-engine-backwards-compatibility,
one way to solve this is thusly:
{noformat}
diff --git a/build.xml b/build.xml
index 02e1f98..245ca8e 100644
--- a/build.xml
+++ b/build.xml
@@ -1447,7 +1447,7 @@
</path>
<property name="eclipse-project-libs"
refid="eclipse-project-libs-path"/>
<script language="javascript"> <![CDATA[
- importClass(java.io.File);
+ var File = java.io.File;
jars =
project.getProperty("eclipse-project-libs").split(project.getProperty("path.separator"));
cp = "";
{noformat}
--
This message was sent by Atlassian JIRA
(v6.2#6252)