我有一个自定义标签,它在其源代码中使用枚举。当我从 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 修饰符它不能工作。