You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Oliver Lietz (JIRA)" <ji...@apache.org> on 2008/07/30 10:59:33 UTC

[jira] Created: (SLING-591) NoSuchMethodError exception in javax.script.Bindings when running on Java 5

NoSuchMethodError exception in javax.script.Bindings when running on Java 5
---------------------------------------------------------------------------

                 Key: SLING-591
                 URL: https://issues.apache.org/jira/browse/SLING-591
             Project: Sling
          Issue Type: Bug
          Components: Scripting
         Environment: Mac OS X 10.5/Intel64
            Reporter: Oliver Lietz


running scripting on Java 5 leads to runtime errors:

*ERROR* [btpool0-2] org.apache.sling.scripting.freemarker.FreemarkerScriptEngine Failure running Freemarker script. java.lang.NoSuchMethodError: javax.script.Bindings.put(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
	at org.apache.sling.scripting.freemarker.FreemarkerScriptEngine.eval(FreemarkerScriptEngine.java:69)
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:135)
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:106)
	at org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:219)
	at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:462)
	at org.apache.sling.engine.impl.SlingMainServlet.processRequest(SlingMainServlet.java:419)
	at org.apache.sling.engine.impl.filter.RequestSlingFilterChain.render(RequestSlingFilterChain.java:48)
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:54)
	at org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter.doFilter(RequestProgressTrackerLogFilter.java:59)
	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:52)
	at org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:273)
	at org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:171)
        [...]



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Re: [jira] Created: (SLING-591) NoSuchMethodError exception in javax.script.Bindings when running on Java 5

Posted by Felix Meschberger <fm...@gmail.com>.
Hi Bryce,

Bryce Ewing schrieb:
> Hi all,
> 
> Been meaning to write a reply to this for a while.  I am confused about 
> this and was wondering if anyone who has worked on the other scripting 
> support can explain something.  From looking at all the javadocs etc for 
> javax.script this has all only been around since 1.6, so I am not sure 
> how the scripting support is supposed to work for sling in 1.5, e.g. the 
> ScriptContext (which is passed in) says since 1.6 in the javadocs.  
> Maybe I am missing something obvious as to why this should work (e.g. is 
> there a library for 1.5 that adds this support?).

You are right, that Java Scripting is only included in the JRE staring 
with Java 6 (aka 1.6). For Java 5 (aka 1.5) Sling includes the Apache 
BSF 3.0 API library.

Now, the problem is, that the BSF 3.0 library is written for Java 1.4 
and up and thus does not use generics. Java Scripting in Java 6 OTOH is 
implemented using generics.

So compiling the code on Java 6 without special precautions causes the 
use of generics which then leads to problems when running on Java with 
BSF 3 containing no generics.

In the scripting/core module we have added special setup in the pom.xml 
to ensure compilation with the correct BSF library. See also SLING-217 
for details.

Another approach of course is to just compile the bundles with a Java 5 JDK.

Hope this helps.

Regards
Felix

Re: [jira] Created: (SLING-591) NoSuchMethodError exception in javax.script.Bindings when running on Java 5

Posted by Bryce Ewing <br...@smx.co.nz>.
Hi all,

Been meaning to write a reply to this for a while.  I am confused about 
this and was wondering if anyone who has worked on the other scripting 
support can explain something.  From looking at all the javadocs etc for 
javax.script this has all only been around since 1.6, so I am not sure 
how the scripting support is supposed to work for sling in 1.5, e.g. the 
ScriptContext (which is passed in) says since 1.6 in the javadocs.  
Maybe I am missing something obvious as to why this should work (e.g. is 
there a library for 1.5 that adds this support?).

Anyway one solution to the problem below would be to replace the line:
    Bindings bindings = 
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
with the line:
    Map<String, Object> bindings = 
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
in FreemarkerScriptEngine

Cheers
Bryce

Oliver Lietz (JIRA) wrote:
> NoSuchMethodError exception in javax.script.Bindings when running on Java 5
> ---------------------------------------------------------------------------
>
>                  Key: SLING-591
>                  URL: https://issues.apache.org/jira/browse/SLING-591
>              Project: Sling
>           Issue Type: Bug
>           Components: Scripting
>          Environment: Mac OS X 10.5/Intel64
>             Reporter: Oliver Lietz
>
>
> running scripting on Java 5 leads to runtime errors:
>
> *ERROR* [btpool0-2] org.apache.sling.scripting.freemarker.FreemarkerScriptEngine Failure running Freemarker script. java.lang.NoSuchMethodError: javax.script.Bindings.put(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
> 	at org.apache.sling.scripting.freemarker.FreemarkerScriptEngine.eval(FreemarkerScriptEngine.java:69)
> 	at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:135)
> 	at org.apache.sling.scripting.core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:106)
> 	at org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:219)
> 	at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:462)
> 	at org.apache.sling.engine.impl.SlingMainServlet.processRequest(SlingMainServlet.java:419)
> 	at org.apache.sling.engine.impl.filter.RequestSlingFilterChain.render(RequestSlingFilterChain.java:48)
> 	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:54)
> 	at org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter.doFilter(RequestProgressTrackerLogFilter.java:59)
> 	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:52)
> 	at org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:273)
> 	at org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:171)
>         [...]
>
>
>
>   

[jira] Commented: (SLING-591) NoSuchMethodError exception in javax.script.Bindings when running on Java 5

Posted by "Oliver Lietz (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/SLING-591?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12621855#action_12621855 ] 

Oliver Lietz commented on SLING-591:
------------------------------------

I would like to see this handled more gracefully.
a) add classifier to bundles (java5, java6)
b) add Bundle-RequiredExecutionEnvironment



> NoSuchMethodError exception in javax.script.Bindings when running on Java 5
> ---------------------------------------------------------------------------
>
>                 Key: SLING-591
>                 URL: https://issues.apache.org/jira/browse/SLING-591
>             Project: Sling
>          Issue Type: Bug
>          Components: Scripting
>         Environment: Mac OS X 10.5/Intel64
>            Reporter: Oliver Lietz
>
> running scripting on Java 5 leads to runtime errors:
> *ERROR* [btpool0-2] org.apache.sling.scripting.freemarker.FreemarkerScriptEngine Failure running Freemarker script. java.lang.NoSuchMethodError: javax.script.Bindings.put(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
> 	at org.apache.sling.scripting.freemarker.FreemarkerScriptEngine.eval(FreemarkerScriptEngine.java:69)
> 	at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:135)
> 	at org.apache.sling.scripting.core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:106)
> 	at org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:219)
> 	at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:462)
> 	at org.apache.sling.engine.impl.SlingMainServlet.processRequest(SlingMainServlet.java:419)
> 	at org.apache.sling.engine.impl.filter.RequestSlingFilterChain.render(RequestSlingFilterChain.java:48)
> 	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:54)
> 	at org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter.doFilter(RequestProgressTrackerLogFilter.java:59)
> 	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:52)
> 	at org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:273)
> 	at org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:171)
>         [...]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (SLING-591) NoSuchMethodError exception in javax.script.Bindings when running on Java 5

Posted by "Felix Meschberger (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/SLING-591?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12622102#action_12622102 ] 

Felix Meschberger commented on SLING-591:
-----------------------------------------

> I would like to see this handled more gracefully.

So do I ;-)

But I think, if we can ensure compilation works correctly (probably in a manner as explained above with the maven setup extension, it would be much simpler. Because we would have a single bundle which is usable on all Java platforms supported by Sling.

One way might be to create a new parent project for the scripting bundles, which contains this setup to be inherited by the scripting modules.

> NoSuchMethodError exception in javax.script.Bindings when running on Java 5
> ---------------------------------------------------------------------------
>
>                 Key: SLING-591
>                 URL: https://issues.apache.org/jira/browse/SLING-591
>             Project: Sling
>          Issue Type: Bug
>          Components: Scripting
>         Environment: Mac OS X 10.5/Intel64
>            Reporter: Oliver Lietz
>
> running scripting on Java 5 leads to runtime errors:
> *ERROR* [btpool0-2] org.apache.sling.scripting.freemarker.FreemarkerScriptEngine Failure running Freemarker script. java.lang.NoSuchMethodError: javax.script.Bindings.put(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
> 	at org.apache.sling.scripting.freemarker.FreemarkerScriptEngine.eval(FreemarkerScriptEngine.java:69)
> 	at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:135)
> 	at org.apache.sling.scripting.core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:106)
> 	at org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:219)
> 	at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:462)
> 	at org.apache.sling.engine.impl.SlingMainServlet.processRequest(SlingMainServlet.java:419)
> 	at org.apache.sling.engine.impl.filter.RequestSlingFilterChain.render(RequestSlingFilterChain.java:48)
> 	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:54)
> 	at org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter.doFilter(RequestProgressTrackerLogFilter.java:59)
> 	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:52)
> 	at org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:273)
> 	at org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:171)
>         [...]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (SLING-591) NoSuchMethodError exception in javax.script.Bindings when running on Java 5

Posted by "Felix Meschberger (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/SLING-591?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12621375#action_12621375 ] 

Felix Meschberger commented on SLING-591:
-----------------------------------------

The problem is probably that you compiled the scripting/freemarker module using a JDK 6 compiler which compiles against the Java Scripting API contained in Java 6, which is written using generics. When running on Java 5, the BSF 3 Java Scripting API implementation is used, which is _not_ written using generics, because it is intended to be run on Java 1.4, also.

Two solutions come to mind:
 - Compile the module with Java 5 instead of Java 6
 - Extend the Freemarker module's <build/plugins> section as follows:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.0-alpha-4</version>
                <executions>
                    <execution>
                        <id>get-bsf3-api</id>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.apache.bsf</groupId>
                                    <artifactId>bsf-api</artifactId>
                                    <version>3.0-beta2</version>
                                </artifactItem>
                            </artifactItems>
                            <stripVersion>true</stripVersion>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <!-- Reported to work on Linux, Windows, Mac OSX -->
                    <compilerArgument>-Xbootclasspath/p:${project.build.directory}/dependency/bsf-api.jar</compilerArgument>
                </configuration>
            </plugin>

This ensure the compilation of the module against the BSF 3 library.

> NoSuchMethodError exception in javax.script.Bindings when running on Java 5
> ---------------------------------------------------------------------------
>
>                 Key: SLING-591
>                 URL: https://issues.apache.org/jira/browse/SLING-591
>             Project: Sling
>          Issue Type: Bug
>          Components: Scripting
>         Environment: Mac OS X 10.5/Intel64
>            Reporter: Oliver Lietz
>
> running scripting on Java 5 leads to runtime errors:
> *ERROR* [btpool0-2] org.apache.sling.scripting.freemarker.FreemarkerScriptEngine Failure running Freemarker script. java.lang.NoSuchMethodError: javax.script.Bindings.put(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
> 	at org.apache.sling.scripting.freemarker.FreemarkerScriptEngine.eval(FreemarkerScriptEngine.java:69)
> 	at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:135)
> 	at org.apache.sling.scripting.core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:106)
> 	at org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:219)
> 	at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:462)
> 	at org.apache.sling.engine.impl.SlingMainServlet.processRequest(SlingMainServlet.java:419)
> 	at org.apache.sling.engine.impl.filter.RequestSlingFilterChain.render(RequestSlingFilterChain.java:48)
> 	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:54)
> 	at org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter.doFilter(RequestProgressTrackerLogFilter.java:59)
> 	at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:52)
> 	at org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:273)
> 	at org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:171)
>         [...]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.