为什么grails在Tomcat中运行app时找不到枚举构造函数

时间:2013-10-18 04:54:56

标签: tomcat grails groovy enums gsp

我有一个自定义标签,在其源代码中使用枚举。 当我从IntelliJ Idea运行应用程序,或从控制台(使用grails run-app)运行应用程序时 工作正常,但在我将其部署为Tomcat中的war文件的情况下,我得到一个例外:

    org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: 
    Error processing GroovyPageView: Error executing tag 
    : tried to access method 
    app.MyEnum.(Ljava/lang/String;ILjava/lang/String;)V from class
    app.MyEnum.Enum$1

枚举看起来像那样:

public enum MyEnum {

    VALUE1("EnumValue1") {
        void printNumber(int number) {
          println (number)
        }
    },
    VALUE2("EnumValue2") {
        void printNumber(int number) {
          println (number * 2)
        }
    }

    static final MyEnum DEFAULT = VALUE1

    final String name

    private MyEnum(String name) {
        this.name = name
    }

    abstract void printNumber(int number) {
    }

}

UPD:如果我将MyEnum的构造函数设为公开,一切正常,但它似乎很尴尬,我仍然不明白为什么没有公共修饰符它不起作用。

0 个答案:

没有答案