Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.math.BigDecimal在运行时和编译时的构造函数数量不匹配_Java_Exception_Groovy_Runtime Compilation - Fatal编程技术网

java.math.BigDecimal在运行时和编译时的构造函数数量不匹配

java.math.BigDecimal在运行时和编译时的构造函数数量不匹配,java,exception,groovy,runtime-compilation,Java,Exception,Groovy,Runtime Compilation,我使用以下实现定义了一个名为BigDecimalWithAttrDisplay的新类: class BigDecimalWithAttrDisplay extends BigDecimal{ String display; BigDecimalWithAttrDisplay(String val){super(val)} public String toString(){ "BigDecimalWithAttrDisplay{val=${super.toS

我使用以下实现定义了一个名为BigDecimalWithAttrDisplay的新类:

class BigDecimalWithAttrDisplay extends BigDecimal{
    String display;
    BigDecimalWithAttrDisplay(String val){super(val)}
    public String toString(){
        "BigDecimalWithAttrDisplay{val=${super.toString()}, display='$display'}";
    }
}
尝试运行使用此类的代码时,我得到:

java.lang.IncompatibleClassChangeError: the number of constructors during runtime and compile time for java.math.BigDecimal do not match. Expected 17 but got 18
at groovy.lang.MetaClassImpl.selectConstructorAndTransformArguments(MetaClassImpl.java:1381)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.selectConstructorAndTransformArguments(ScriptBytecodeAdapter.java:234)
at com.e4x.auto.services.checkout.testapi.model.response.BigDecimalWithAttrDisplay.<init>(BigDecimalWithAttrDisplay.groovy:31)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:71)
at org.codehaus.groovy.runtime.callsite.ConstructorSite.callConstructor(ConstructorSite.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:194)
java.lang.CompatibleClassChangeError:java.math.BigDecimal的运行时和编译时的构造函数数量不匹配。预计17岁,但得到18岁
在groovy.lang.MetaClassImpl.selectConstructorAndTransformArguments(MetaClassImpl.java:1381)中
位于org.codehaus.groovy.runtime.ScriptBytecodeAdapter.selectConstructorAndTransformArguments(ScriptBytecodeAdapter.java:234)
位于com.e4x.auto.services.checkout.testapi.model.response.BigDecimalWithAttrDisplay。(BigDecimalWithAttrDisplay.groovy:31)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:513)
位于org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
位于org.codehaus.groovy.reflection.CachedConstructor.doconConstructorInvoke(CachedConstructor.java:71)
位于org.codehaus.groovy.runtime.callsite.ConstructorSite.callConstructor(ConstructorSite.java:42)
位于org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:194)

问题是什么?我如何解决它?

尝试清理创建的类(重新重建项目)。您可能有以前编译的工件


另一种可能是使用Java 7和Groovy代码,这些代码的编译版本低于7。那么你也可能会遇到问题。(参见示例:)

通过在构造函数中添加super(val)来添加对BigDecimal构造函数的调用。

无法在2.0.5中重现错误,但如果问题是缺少构造函数,Groovy有一个名为的注释,这可能会有所帮助


也来看看。它可能比继承更酷。

您正在运行哪个groovy版本?很难说。它是1.80或1.86实际上在我的环境中(使用intelliJ),我没有这个问题。它只发生在我的集成服务器上,所以总是干净的(每个编译都从零开始),我使用java 6I,如果它在本地工作正常,但在开发服务器上却不工作,那么我也有同样的问题。这个@Delegate非常好。。但由于某种原因,它根本不起作用,在使用java和groovy联合编译时它受支持吗?java:someClass.java:91:找不到符号符号符号:方法intValue()位置:class com….BigDecimalWithAttrDisplay(我使用Intellij12)我在@Delegate上遇到了一些问题,但那是1.7.5次。您认为您可以升级到groovy 2吗?遗憾的是,没有。我们非常担心可比性问题,我需要了解更多关于迁移到groovy 2的风险。可能是intelliJ或join编译器的错误,因为当使用纯groovy时,我没有得到这个错误。这是一个很酷的功能:)那么mixin/类别呢?或者你们只是在使用类型化groovy?