Eclipse compiler used 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