最近碰到这个问题,页面上传图片,gif,png,jpg,jpeg都能正常上传,但是bmp格式的就报错,查看后台日志确实是报错了,原因就是jmimemagic包找不到对应的类型。报了个类型不匹配的错误。我的解决办法总体来讲并没有正面解决这个问题。而是后台判断图片的格式,如果是bmp格式,就直接返回页面提示信息:不支持的图片格式类型。
后台是dubbo服务,在消费端先是报错:java.io.IOException: Response data error, expect Throwable, but get {suppressedExceptions=[], cause=(this Map), stackTrace=[Ljava.lang.StackTraceElement;@22282b30, detailMessage=null}
,然后去提供方看代码日志,就报错如题目中所说:net.sf.jmimemagic.MagicMatchNotFoundException
。具体异常如下:
1.dubbo消费方
上传图片出错
com.jd.service.rpc.RpcException: Failed to invoke the method uploadImg in the service com.jd.ecc.b2b.base.center.service.client.ImgService. Tried 3 times of the providers [10.112.12.100:20881] (1/1) from the registry 10.112.12.10:2181 on the consumer 10.112.12.119 using the dubbo version 2.4.10. Last error is: Failed to invoke remote method: uploadImg, provider: dubbo://10.112.12.100:20881/com.jd.ecc.b2b.base.center.service.client.ImgService?anyhost=true&application=mall&check=false&default.timeout=30000&dubbo=2.0.1***************省略dubbo的信息******************,
cause: java.io.IOException: Response data error, expect Throwable, but get {suppressedExceptions=[], cause=(this Map), stackTrace=[Ljava.lang.StackTraceElement;@22282b30, detailMessage=null}
java.io.IOException: Response data error, expect Throwable, but get {suppressedExceptions=[], cause=(this Map), stackTrace=[Ljava.lang.StackTraceElement;@22282b30, detailMessage=null}
at com.jd.service.rpc.protocol.dubbo.DecodeableRpcResult.decode(DecodeableRpcResult.java:94)
at com.jd.service.rpc.protocol.dubbo.DecodeableRpcResult.decode(DecodeableRpcResult.java:109)
at com.jd.service.rpc.protocol.dubbo.DubboCodec.decodeBody(DubboCodec.java:97)
at com.jd.service.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:128)
at com.jd.service.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:87)
at com.jd.service.rpc.protocol.dubbo.DubboCountCodec.decode(DubboCountCodec.java:49)
at com.jd.service.remoting.transport.netty.NettyCodecAdapter$InternalDecoder.messageReceived(NettyCodecAdapter.java:135)
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:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at com.jd.service.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:101)
at com.jd.service.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:226)
at com.jd.service.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:72)
at com.jd.service.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:52)
at com.jd.service.common.bytecode.proxy75.uploadImg(proxy75.java)
at com.jd.ecc.b2b.mall.web.register.AuthenticationController.uploadImage(AuthenticationController.java:550)
at com.jd.ecc.b2b.mall.web.register.AuthenticationController.ajaxFileUpload(AuthenticationController.java:1388)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.