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.