我有一个自定义标签,在其源代码中使用枚举。 当我从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的构造函数设为公开,一切正常,但它似乎很尴尬,我仍然不明白为什么没有公共修饰符它不起作用。