maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Guillaume Boué (JIRA) <j...@apache.org>
Subject [jira] [Commented] (MANTRUN-200) Scriptdef tasks fail to load when running on Java9
Date Wed, 23 Aug 2017 16:20:01 GMT

    [ https://issues.apache.org/jira/browse/MANTRUN-200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16138560#comment-16138560
] 

Guillaume Boué commented on MANTRUN-200:
----------------------------------------

[~rfscholte] The parent class loader in {{ClassRealm}} is indeed correct, the issue is related
to the new way {{ServiceLoader}} looks for services in Java 9 modules: it delegates directly
to {{ClassLoader.getParent()}} and this ignores ClassRealm's {{parentClassLoader}}. This Jira
issue was actually the subject of [that previous mail of mine|http://mail-archives.apache.org/mod_mbox/maven-dev/201706.mbox/%3C49a731c4-a3ed-83d5-13a7-b0e8ec845ad6%40apache.org%3E].
I haven't got around to work more on this but it'd be great to have insights of Java 9 devs.

> Scriptdef tasks fail to load when running on Java9
> --------------------------------------------------
>
>                 Key: MANTRUN-200
>                 URL: https://issues.apache.org/jira/browse/MANTRUN-200
>             Project: Maven Antrun Plugin
>          Issue Type: Bug
>    Affects Versions: 1.8
>            Reporter: Dan Berindei
>
> I have a Maven project using maven-antrun-plugin:
> {code}
> <?xml version='1.0' encoding='UTF-8'?>
> <project>
>    <modelVersion>4.0.0</modelVersion>
>    <artifactId>my-test-app</artifactId>
>    <groupId>my-test-group</groupId>
>    <version>1.0-SNAPSHOT</version>
>    <build>
>       <plugins>
>          <plugin>
>             <groupId>org.apache.maven.plugins</groupId>
>             <artifactId>maven-antrun-plugin</artifactId>
>             <version>1.8</version>
>             <executions>
>                <execution>
>                   <id>compile</id>
>                   <phase>compile</phase>
>                   <configuration>
>                      <target>
>                         <ant antfile="build.xml" inheritRefs="true">
>                            <target name="all"/>
>                         </ant>
>                      </target>
>                   </configuration>
>                   <goals>
>                      <goal>run</goal>
>                   </goals>
>                </execution>
>             </executions>
>          </plugin>
>       </plugins>
>    </build>
> </project>
> {code}
> The Ant build file uses a script:
> {code}
> <?xml version='1.0' encoding='UTF-8'?>
> <project name="scriptdef-test-build">
>    <scriptdef name="test-script" language="javascript">
>       <![CDATA[
>            var System = Java.type('java.lang.System');
>            System.out.println("Working!");
>         ]]>
>    </scriptdef>
>    <target name="all">
>       <test-script/>
>    </target>
> </project>
> {code}
> On Java 8 it works, but on Java 9 (9-ea+162) it can't find the script engine:
> {noformat}
> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.8:run
(compile) on project my-test-app: An Ant BuildException has occured: The following error occurred
while executing this line:
> /home/dan/scriptdef-test/build.xml:10: Unable to create javax script engine for javascript
> around Ant part ...<ant antfile="build.xml" inheritRefs="true">... @ 4:47 in /home/dan/scriptdef-test/target/antrun/build-main.xml
> ...    
> Caused by: /home/dan/scriptdef-test/build.xml:10: Unable to create javax script engine
for javascript
>     at org.apache.tools.ant.util.optional.JavaxScriptRunner.evaluateScript(JavaxScriptRunner.java:84)
>     at org.apache.tools.ant.util.optional.JavaxScriptRunner.executeScript(JavaxScriptRunner.java:67)
>     at org.apache.tools.ant.taskdefs.optional.script.ScriptDef.executeScript(ScriptDef.java:350)
>     at org.apache.tools.ant.taskdefs.optional.script.ScriptDefBase.execute(ScriptDefBase.java:50)
>     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
>     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:547)
>     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.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
>     at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
>     at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)
>     ... 34 more
> {noformat}
> I have attached a debugger and I saw that the {{ScriptEngineManager}} used by {{JavaxScriptRunner}}
doesn't have any script engines, because the service loader it uses doesn't find any {{ScriptEngineFactory}}
implementations. I have tried {{\--add-modules jdk.scripting.nashorn}} and {{\--add-opens
jdk.scripting.nashorn/jdk.nashorn.api.scripting=ALL-UNNAMED}}, but neither helped.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message