我有一个自定义标签,它在其源代码中使用枚举。当我从 IntelliJ Idea 或控制台(使用 grails run-app)运行应用程序时,应用程序运行良好,但如果我将其部署为 Tomcat 中的 war 文件,则会出现如下异常:
org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: 处理 GroovyPageView 时出错:执行标签时出错 : 试图访问方法 app.MyEnum.(Ljava/lang/String;ILjava/lang/String;)V 来自类 app.MyEnum.Enum$1
枚举看起来像这样:
公共枚举 MyEnum { VALUE1(“枚举值 1”){ 无效打印编号(整数){ println (数字) } }, VALUE2("EnumValue2") { 无效打印编号(整数){ println (数字 * 2) } } 静态最终 MyEnum DEFAULT = VALUE1 最终字符串名称 私人我的枚举(字符串名称){ this.name = 名称 } 抽象无效 printNumber(int number) { } }
UPD:如果我将 MyEnum 的构造函数公开,一切都会正常工作,但这似乎很尴尬,我仍然不明白为什么没有 public 修饰符它不能工作。