You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Eric Milles (Jira)" <ji...@apache.org> on 2022/05/22 15:43:00 UTC

[jira] [Resolved] (GROOVY-5320) groovyc ant task cannot compile Servlet using Java EE 6 reference API libaries (results in ClassFormatError Missing Code attribute)

     [ https://issues.apache.org/jira/browse/GROOVY-5320?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eric Milles resolved GROOVY-5320.
---------------------------------
    Fix Version/s: 2.5.0
       Resolution: Fixed

Starting in Groovy 2.5, classes are resolved through ASM before traditional class loading.  This allows {{groovyc}} to compile against this {{servlet-api}} artifact.

Tested against Groovy 1.8.6, 2.0.8, 2.1.9, 2.2.2, 2.3.11, 2.4.21 and 2.5.16

> groovyc ant task cannot compile Servlet using Java EE 6 reference API libaries (results in ClassFormatError Missing Code attribute)
> -----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: GROOVY-5320
>                 URL: https://issues.apache.org/jira/browse/GROOVY-5320
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler
>    Affects Versions: 1.8.6, 2.4.3
>         Environment: N/A
>            Reporter: Kirk Rasmussen
>            Priority: Major
>              Labels: ant, groovyc, sevlet
>             Fix For: 2.5.0
>
>         Attachments: GroovyBug.zip
>
>
> Compiling a simple servlet against the Java EE 6 reference APIs results in a groovyc compilation failure. I have attached a project with both a Java Servlet and a Groovy Servlet.
> The Java compiler works ok but the groovyc fails. Using Maven's eclipse-groovy-plugin also works ok. It seems that the groovyc compiler is introspecting the class in a different way than the maven eclipse-groovy-compiler.
> {code}
> Buildfile: X:\workspaces\test\krasmussen\GroovyBug\GroovyBug\build.xml
> clean:
> init:
> compile:
>     [mkdir] Created dir: X:\workspaces\test\krasmussen\GroovyBug\GroovyBug\build\classes\main
>     [javac] Compiling 1 source file to X:\workspaces\test\krasmussen\GroovyBug\GroovyBug\build\classes\main
>     [javac] X:\workspaces\test\krasmussen\GroovyBug\GroovyBug\src\main\java\com\acme\test\servlet\JavaServlet.java
>   [groovyc] Compiling 1 source file to X:\workspaces\test\krasmussen\GroovyBug\GroovyBug\build\classes\main
>   [groovyc] X:\workspaces\test\krasmussen\GroovyBug\GroovyBug\src\main\groovy\com\acme\test\servlet\GroovyServlet.groovy
>   [groovyc] >>> a serious error occurred: javax/servlet/ServletException : Missing Code attribute
>   [groovyc] >>> stacktrace:
>   [groovyc] java.lang.ClassFormatError: javax/servlet/ServletException : Missing Code attribute
>   [groovyc]     at java.lang.ClassLoader.defineClass1(Native Method)
>   [groovyc]     at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
>   [groovyc]     at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
>   [groovyc]     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
>   [groovyc]     at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
>   [groovyc]     at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
>   [groovyc]     at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
>   [groovyc]     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
>   [groovyc]     at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>   [groovyc]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>   [groovyc]     at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
>   [groovyc]     at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:696)
>   [groovyc]     at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:564)
>   [groovyc]     at org.codehaus.groovy.control.ResolveVisitor.resolveToClass(ResolveVisitor.java:709)
>   [groovyc]     at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:275)
>   [groovyc]     at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1241)
>   [groovyc]     at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:148)
>   [groovyc]     at org.codehaus.groovy.control.CompilationUnit$9.call(CompilationUnit.java:605)
>   [groovyc]     at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:843)
>   [groovyc]     at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:548)
>   [groovyc]     at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:497)
>   [groovyc]     at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:480)
>   [groovyc]     at org.codehaus.groovy.tools.FileSystemCompiler.compile(FileSystemCompiler.java:60)
>   [groovyc]     at org.codehaus.groovy.tools.FileSystemCompiler.doCompilation(FileSystemCompiler.java:216)
>   [groovyc]     at org.codehaus.groovy.tools.FileSystemCompiler.commandLineCompile(FileSystemCompiler.java:149)
>   [groovyc]     at org.codehaus.groovy.tools.FileSystemCompiler.commandLineCompileWithErrorHandling(FileSystemCompiler.j
> ava:179)
>   [groovyc]     at org.codehaus.groovy.ant.FileSystemCompilerFacade.main(FileSystemCompilerFacade.java:27)
> BUILD FAILED
> X:\workspaces\test\krasmussen\GroovyBug\GroovyBug\build.xml:42: Forked groovyc returned error code: 1
> {code}
> Maven build
> {code}
> X:\workspaces\test\krasmussen\GroovyBug>mvn clean compile
> [INFO] Scanning for projects...
> [INFO]
> [INFO] ------------------------------------------------------------------------
> [INFO] Building CPMS Parent Module 3.0-SNAPSHOT
> [INFO] ------------------------------------------------------------------------
> [INFO]
> [INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ parent-pom ---
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 0.760s
> [INFO] Finished at: Mon Feb 20 14:58:45 CST 2012
> [INFO] Final Memory: 28M/64M
> [INFO] ------------------------------------------------------------------------
> X:\workspaces\test\krasmussen\GroovyBug>mvn clean compile
> [INFO] Scanning for projects...
> [INFO]
> [INFO] ------------------------------------------------------------------------
> [INFO] Building CPMS Parent Module 3.0-SNAPSHOT
> [INFO] ------------------------------------------------------------------------
> [INFO]
> [INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ groovy-bug ---
> [INFO]
> [INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ groovy-bug ---
> [INFO] Using 'UTF-8' encoding to copy filtered resources.
> [INFO] skip non existing resourceDirectory X:\workspaces\test\krasmussen\GroovyBug\src\main\resources
> [INFO]
> [INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ groovy-bug ---
> [INFO] Using Groovy-Eclipse compiler to compile both Java and Groovy files
> [INFO] Compiling 2 source files to X:\workspaces\test\krasmussen\GroovyBug\target\classes
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 3.421s
> [INFO] Finished at: Mon Feb 20 14:59:20 CST 2012
> [INFO] Final Memory: 15M/64M
> [INFO] ------------------------------------------------------------------------
> X:\workspaces\test\krasmussen\GroovyBug>
> {code}



--
This message was sent by Atlassian Jira
(v8.20.7#820007)