'org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl' could not be instantiated com.alibaba.com.caucho.hessian.io.HessianFieldException:
'org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl' could not be instantiated at com.alibaba.com.caucho.hessian.io.JavaDeserializer.logDeserializeError(JavaDeserializer.java:167) at com.alibaba.com.caucho.hessian.io.JavaDeserializer$ObjectFieldDeserializer.deserialize
(JavaDeserializer.java:408) at com.alibaba.com.caucho.hessian.io.JavaDeserializer.readObject(JavaDeserializer.java:273) at com.alibaba.com.caucho.hessian.io.JavaDeserializer.readObject(JavaDeserializer.java:200) at com.alibaba.com.caucho.hessian.io.SerializerFactory.readObject(SerializerFactory.java:525) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObjectInstance(Hessian2Input.java:2791) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2731) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2260) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2705) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2260) at com.alibaba.com.caucho.hessian.io.CollectionDeserializer.readLengthList
(CollectionDeserializer.java:119) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2186) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2057) at com.alibaba.com.caucho.hessian.io.JavaDeserializer$ObjectFieldDeserializer.deserialize
(JavaDeserializer.java:404) at com.alibaba.com.caucho.hessian.io.JavaDeserializer.readObject(JavaDeserializer.java:273) at com.alibaba.com.caucho.hessian.io.JavaDeserializer.readObject(JavaDeserializer.java:200) at com.alibaba.com.caucho.hessian.io.SerializerFactory.readObject(SerializerFactory.java:525) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObjectInstance(Hessian2Input.java:2791) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2731) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2260) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2705) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2260) at com.alibaba.dubbo.common.serialize.hessian2.Hessian2ObjectInput.readObject
(Hessian2ObjectInput.java:74) at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcResult.decode(DecodeableRpcResult.java:90) at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcResult.decode(DecodeableRpcResult.java:110) at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCodec.decodeBody(DubboCodec.java:88) at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:121) at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:82) at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCountCodec.decode(DubboCountCodec.java:44) at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalDecoder.messageReceived
(NettyCodecAdapter.java:133) at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream
(SimpleChannelUpstreamHandler.java:70) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255) at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109) at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312) at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90) at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: com.alibaba.com.caucho.hessian.io.HessianProtocolException:
'org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl' could not be instantiated at com.alibaba.com.caucho.hessian.io.JavaDeserializer.instantiate(JavaDeserializer.java:313) at com.alibaba.com.caucho.hessian.io.JavaDeserializer.readObject(JavaDeserializer.java:198) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObjectInstance(Hessian2Input.java:2789) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2128) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2057) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2101) at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2057) at com.alibaba.com.caucho.hessian.io.JavaDeserializer$ObjectFieldDeserializer.deserialize
(JavaDeserializer.java:404) ... 43 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at com.alibaba.com.caucho.hessian.io.JavaDeserializer.instantiate(JavaDeserializer.java:309) ... 50 more Caused by: java.lang.NullPointerException at org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl.<init>
(ConstraintDescriptorImpl.java:158) at org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl.<init>
(ConstraintDescriptorImpl.java:211) ... 55 more
问题分析
上面的问题从异常面来看已经很直观了,'org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl' could not be instantiated,这个类无法实例化,那是什么原因导致它无法实例化呢?
public class DubboConstraintViolation<T> implements ConstraintViolation<T>, Serializable { static final Logger logger = LoggerFactory.getLogger(DubboConstraintViolation.class.getName());
private static final long serialVersionUID = -8901791810611051795L;
public DubboConstraintViolation() { } public DubboConstraintViolation(ConstraintViolation<T> violation) { this(violation.getMessageTemplate(), violation.getMessage(), violation.getInvalidValue(), violation.getPropertyPath(), violation.getExecutableParameters(), violation.getExecutableReturnValue()); }
public DubboConstraintViolation(String messageTemplate, String interpolatedMessage, Object value, Path propertyPath, Object[] executableParameters, Object executableReturnValue) { this.messageTemplate = messageTemplate; this.interpolatedMessage = interpolatedMessage; this.value = value; this.propertyPath = propertyPath; this.executableParameters = executableParameters; this.executableReturnValue = executableReturnValue; // pre-calculate hash code, the class is immutable and hashCode is needed often this.hashCode = createHashCode(); } @Override public final String getMessage() { return interpolatedMessage; }
@Override public final String getMessageTemplate() { return messageTemplate; }
@Override public final T getRootBean() { return null; }
@Override public final Class<T> getRootBeanClass() { return null; }
@Override public final Object getLeafBean() { return null; }
@Override public final Object getInvalidValue() { return value; }
@Override public final Path getPropertyPath() { return propertyPath; }
@Override public final ConstraintDescriptor<?> getConstraintDescriptor() { return null; }
@Override public <C> C unwrap(Class<C> type) { if ( type.isAssignableFrom( ConstraintViolation.class ) ) { return type.cast( this ); } throw new ValidationException("Type " + type.toString() + " not supported for unwrapping."); }
@Override public Object[] getExecutableParameters() { return executableParameters; }
@Override public Object getExecutableReturnValue() { return executableReturnValue; }
@Override // IMPORTANT - some behaviour of Validator depends on the correct implementation of this equals method! (HF)
// Do not take expressionVariables into account here. If everything else matches, the two CV should be considered // equals (and because of the scary comment above). After all, expressionVariables is just a hint about how we got // to the actual CV. (NF) public boolean equals(Object o) { if ( this == o ) { return true; } if ( o == null || getClass() != o.getClass() ) { return false; }
DubboConstraintViolation<?> that = (DubboConstraintViolation<?>) o;
// Same as for equals, do not take expressionVariables into account here. private int createHashCode() { int result = interpolatedMessage != null ? interpolatedMessage.hashCode() : 0; result = 31 * result + ( propertyPath != null ? propertyPath.hashCode() : 0 ); result = 31 * result + ( value != null ? value.hashCode() : 0 ); result = 31 * result + ( messageTemplate != null ? messageTemplate.hashCode() : 0 ); return result; }