[ 
https://issues.apache.org/jira/browse/SLING-1809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12966535#action_12966535
 ] 

Stefan Guggisberg commented on SLING-1809:
------------------------------------------

i have verified that this issue is solved by 
explicitly setting the target version, e.g.


        String sourceVersion = ....
        if (sourceVersion != null) {
            props.put("org.eclipse.jdt.core.compiler.source", sourceVersion);
            props.put("org.eclipse.jdt.core.compiler.compliance", 
sourceVersion);
            props.put("org.eclipse.jdt.core.compiler.codegen.targetPlatform", 
sourceVersion);
        }
        CompilerOptions settings = new CompilerOptions(props);

> Eclipse compiler used in commons.compiler causes "Illegal type in constant 
> pool" with enums
> -------------------------------------------------------------------------------------------
>
>                 Key: SLING-1809
>                 URL: https://issues.apache.org/jira/browse/SLING-1809
>             Project: Sling
>          Issue Type: Bug
>          Components: Commons
>    Affects Versions: Commons Compiler 2.0.0
>            Reporter: Bertrand Delacretaz
>
> According to [0] the eclipse compiler can't handle enums in certain 
> environments.
> The trunk org.apache.sling.commons.compiler bundle embeds (eclipse-jdt) 
> core-3.3.0-v_771.jar which exposes this issue. 
> According to [0] the issue should be fixed in v3.5.2, but the central Maven 
> repository does not provide a more recent version than the one we currently 
> use.
> To reproduce the problem, install the compiler and java scripting bundle and 
> create a scripted java servlet that uses enums (example below), at runtime 
> this causes:
> java.lang.VerifyError: 
> (class: enumtest/EnumTest, method: valueOf signature: 
> (Ljava/lang/String;)Lenumtest/EnumTest;) 
> Illegal type in constant pool
> [0] https://bugs.eclipse.org/bugs/show_bug.cgi?id=291985
> Here's the example servlet, store in 
> /apps/JavaScriptingTest2/JavaScriptingTest2.java and use "JavaScriptingTest2" 
> resource type:
> package apps.JavaScriptingTest2;
> import javax.servlet.http.*;
> import java.io.IOException;
> public class JavaScriptingTest2 extends HttpServlet {
>     static enum EnumTest { FOO, BAR };
>     
>     public void doGet(HttpServletRequest req, HttpServletResponse resp) 
> throws IOException {
>         resp.getWriter().write("FOO=" + EnumTest.FOO);
>     }
> }

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

Reply via email to