Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.7-rc-2
-
None
-
Groovy 1.7-RC-2 on jre1.6.0_04 on Windows Vista SP2
Description
The following code produces class MyClass OK, but running the class produces error:
Exception in thread "main" java.lang.NoSuchMethodError: main
Here's the ASTBuilder code I used:
import static org.objectweb.asm.Opcodes.ACC_PUBLIC import static org.objectweb.asm.Opcodes.ACC_STATIC import org.codehaus.groovy.ast.builder.AstBuilder import org.codehaus.groovy.control.CompilerConfiguration import org.codehaus.groovy.control.CompilationUnit def classes= new AstBuilder().buildFromSpec{ classNode 'MyClass', ACC_PUBLIC, { classNode Object //superclass interfaces{ classNode GroovyObject } mixins{} genericsTypes{} method('main', ACC_PUBLIC & ACC_STATIC, Void.class) { parameters{ parameter 'args': String[].class } exceptions{} block{ methodCall { variable "this" constant "println" argumentList { constant "Hello, world!" } } } } } } def gcl= new GroovyClassLoader() def sec= null def ccfg= CompilerConfiguration.DEFAULT def cu= new CompilationUnit(ccfg, sec, gcl) cu.addClassNode(classes[0]) cu.compile()
Also tried this but same result:
import static org.objectweb.asm.Opcodes.ACC_PUBLIC import static org.objectweb.asm.Opcodes.ACC_STATIC import org.codehaus.groovy.ast.* import java.security.CodeSource import org.codehaus.groovy.ast.builder.AstBuilder import org.codehaus.groovy.control.CompilerConfiguration import org.codehaus.groovy.control.CompilationUnit import org.codehaus.groovy.control.CompilePhase def classes= new AstBuilder().buildFromString(CompilePhase.CONVERSION, """\ public class MyClass{ public static void main(String[] args){ println "Hello, world!" } } """) def gcl= new GroovyClassLoader() def sec= null //new CodeSource() def ccfg= CompilerConfiguration.DEFAULT def cu= new CompilationUnit(ccfg, sec, gcl) cu.addClassNode(classes[1]) cu.compile()