0

持つ:

class Task {
    Integer code
    String name
}

def classDefinition = """
            package untitled24

            class TasksCommand {
                List tasks = [].withDefault { new Task() }
            }
            TasksCommand
        """

def shell = new GroovyShell(this.class.classLoader)
Class<?> definedClass = shell.evaluate(classDefinition)

実行結果は次のとおりです。

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script1.groovy: 5: unable to resolve class Task 
 @ line 5, column 47.
   List tasks = [].withDefault { new Task()
                             ^

何か案が?(groovy バージョンは 1.8.8)

4

1 に答える 1

0

Task 定義がパッケージに含まれていないため、内部のコードuntitled24がクラスを見つけることができないためです...

上記を次のように変更した場合:

package woo

class Task {
  Integer code
  String name
}

def classDefinition = """package untitled24
                        |
                        |class TasksCommand {
                        |  List tasks = [].withDefault { new woo.Task() }
                        |}
                        |TasksCommand""".stripMargin()

def shell = new GroovyShell(this.class.classLoader)
Class<?> definedClass = shell.evaluate(classDefinition)

動作するはずです...(stripMargin読みやすくするために追加)

于 2012-09-13T15:07:58.837 に答える