jprotobuf
jprotobuf copied to clipboard
jprotobuf-2.0.2-jar-with-dependencies.jar,centos7环境,jdk 1.8.0_112
java.lang.ExceptionInInitializerError
at com.baidu.bjf.remoting.protobuf.CodeGenerator.getAccessByField(CodeGenerator.java:633)
at com.baidu.bjf.remoting.protobuf.CodeGenerator.getEncodeMethodCode(CodeGenerator.java:500)
at com.baidu.bjf.remoting.protobuf.CodeGenerator.getCode(CodeGenerator.java:196)
at com.baidu.bjf.remoting.protobuf.ProtobufProxy.doCreate(ProtobufProxy.java:224)
at com.baidu.bjf.remoting.protobuf.ProtobufProxy.create(ProtobufProxy.java:159)
at com.baidu.bjf.remoting.protobuf.ProtobufProxy.create(ProtobufProxy.java:126)
at com.novsky.bdds.jms.JMSSender.sendMessage(JMSSender.java:54)
at com.novsky.bdds.business.StarTrackerTrackerRecieverCMD.V5(StarTrackerTrackerRecieverCMD.java:102)
at com.novsky.bdds.business.StarTrackerTrackerRecieverCMD.process(StarTrackerTrackerRecieverCMD.java:42)
at com.novsky.bdds.deviceservice.StarTrackerCmdHandler.channelRead0(StarTrackerCmdHandler.java:58)
at com.novsky.bdds.deviceservice.StarTrackerCmdHandler.channelRead0(StarTrackerCmdHandler.java:1)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:335)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:327)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:335)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:327)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:335)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:327)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:288)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:262)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:349)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:335)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:327)
.................
Caused by: java.lang.IllegalStateException: Compilation failed. class: com.baidu.bjf.remoting.protobuf.descriptor.FileDescriptorProtoPOJO$$JProtoBufClass, diagnostics: [FileDescriptorProtoPOJO$$JProtoBufClass.java:2: 错误: 程序包com.google.protobuf不存在
import com.google.protobuf.;
^, FileDescriptorProtoPOJO$$JProtoBufClass.java:4: 错误: 程序包com.baidu.bjf.remoting.protobuf.utils不存在
import com.baidu.bjf.remoting.protobuf.utils.;
^, FileDescriptorProtoPOJO$$JProtoBufClass.java:8: 错误: 找不到符号
import com.baidu.bjf.remoting.protobuf.descriptor.FileDescriptorProtoPOJO;
^
符号: 类 FileDescriptorProtoPOJO
位置: 程序包 com.baidu.bjf.remoting.protobuf.descriptor, FileDescriptorProtoPOJO$$JProtoBufClass.java:9: 错误: 找不到符号
public class FileDescriptorProtoPOJO$$JProtoBufClass implements com.baidu.bjf.remoting.protobuf.Codec<com.baidu.bjf.remoting.protobuf.descriptor.FileDescriptorProtoPOJO> {
^
符号: 类 Codec
位置: 程序包 com.baidu.bjf.remoting.protobuf, FileDescriptorProtoPOJO$$JProtoBufClass.java:9: 错误: 找不到符号
public class FileDescriptorProtoPOJO$$JProtoBufClass implements com.baidu.bjf.remoting.protobuf.Codec<com.baidu.bjf.remoting.protobuf.descriptor.FileDescriptorProtoPOJO> {
^
符号: 类 FileDescriptorProtoPOJO
位置: 程序包 com.baidu.bjf.remoting.protobuf.descriptor, FileDescriptorProtoPOJO$$JProtoBufClass.java:10: 错误: 程序包com.google.protobuf.Descriptors不存在
private com.google.protobuf.Descriptors.Descriptor descriptor;
^, FileDescriptorProtoPOJO$$JProtoBufClass.java:11: 错误: 找不到符号
public byte[] encode(com.baidu.bjf.remoting.protobuf.descriptor.FileDescriptorProtoPOJO t) throws IOException {
^
符号: 类 FileDescriptorProtoPOJO
位置: 程序包 com.baidu.bjf.remoting.protobuf.descriptor, FileDescriptorProtoPOJO$$JProtoBufClass.java:105: 错误: 找不到符号
public com.baidu.bjf.remoting.protobuf.descriptor.FileDescriptorProtoPOJO decode(byte[] bb) throws IOException {
^
符号: 类 FileDescriptorProtoPOJO
位置: 程序包 com.baidu.bjf.remoting.protobuf.descriptor, FileDescriptorProtoPOJO$$JProtoBufClass.java:222: 错误: 找不到符号
public int size(com.baidu.bjf.remoting.protobuf.descriptor.FileDescriptorProtoPOJO t) throws IOException {
^
符号: 类 FileDescriptorProtoPOJO
位置: 程序包 com.baidu.bjf.remoting.protobuf.descriptor, FileDescriptorProtoPOJO$$JProtoBufClass.java:303: 错误: 找不到符号
public void writeTo(com.baidu.bjf.remoting.protobuf.descriptor.FileDescriptorProtoPOJO t, CodedOutputStream output) throws IOException {
^
符号: 类 FileDescriptorProtoPOJO
位置: 程序包 com.baidu.bjf.remoting.protobuf.descriptor, FileDescriptorProtoPOJO$$JProtoBufClass.java:303: 错误: 找不到符号
public void writeTo(com.baidu.bjf.remoting.protobuf.descriptor.FileDescriptorProtoPOJO t, CodedOutputStream output) throws IOException {
^
符号: 类 CodedOutputStream
位置: 类 com.baidu.bjf.remoting.protobuf.descriptor.FileDescriptorProtoPOJO$$JProtoBufClass, FileDescriptorProtoPOJO$$JProtoBufClass.java:382: 错误: 找不到符号
public com.baidu.bjf.remoting.protobuf.descriptor.FileDescriptorProtoPOJO readFrom(CodedInputStream input) throws IOException {
^
符号: 类 CodedInputStream
位置: 类 com.baidu.bjf.remoting.protobuf.descriptor.FileDescriptorProtoPOJO$$JProtoBufClass, FileDescriptorProtoPOJO$$JProtoBufClass.java:382: 错误: 找不到符号
public com.baidu.bjf.remoting.protobuf.descriptor.FileDescriptorProtoPOJO readFrom(CodedInputStream input) throws IOException {
^
符号: 类 FileDescriptorProtoPOJO
位置: 程序包 com.baidu.bjf.remoting.protobuf.descriptor, FileDescriptorProtoPOJO$$JProtoBufClass.java:498: 错误: 程序包com.google.protobuf.Descriptors不存在
public com.google.protobuf.Descriptors.Descriptor getDescriptor() throws IOException {
^]
at com.baidu.bjf.remoting.protobuf.utils.compiler.JdkCompiler.doCompile(JdkCompiler.java:145)
at com.baidu.bjf.remoting.protobuf.utils.compiler.AbstractCompiler.compile(AbstractCompiler.java:37)
at com.baidu.bjf.remoting.protobuf.ProtobufProxy.doCreate(ProtobufProxy.java:249)
at com.baidu.bjf.remoting.protobuf.ProtobufProxy.create(ProtobufProxy.java:159)
at com.baidu.bjf.remoting.protobuf.ProtobufProxy.create(ProtobufProxy.java:126)
at com.baidu.bjf.remoting.protobuf.CodedConstant.
把具体的使用方式与proto文件发一下出来
就因为用jprotobuf所以就没做proto文件 要有proto文件,还差protoc那一步的功夫吗?
我也遇到这个问题了 sprint boot 项目 在eclipse直接run as java application没有问题 java -jar xxx.jar就出现这个错误提示 是不是类加载的问题
spring boot运行,建议使用 precompile方式,进行预编译处理
@jhunter 谢谢 ,使用precompile问题解决了
@jhunters
spring boot项目,messageconvertor,decode没有问题,encode时遇到类找不到问题
java.lang.NoClassDefFoundError: Could not initialize class com.baidu.bjf.remoting.protobuf.CodedConstant at com.hyc.sxcloud.das.domain.CommonResponse$$JProtoBufClass.encode(CommonResponse$$JProtoBufClass.java:13) ~[classes!/:2.0] at com.hyc.sxcloud.das.domain.CommonResponse$$JProtoBufClass.encode(CommonResponse$$JProtoBufClass.java:9) ~[classes!/:2.0] at com.hyc.sxcloud.das.utils.JProtobufHttpMessageConverter.writeInternal(JProtobufHttpMessageConverter.java:80) ~[classes!/:2.0] at org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:227) ~[spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:247) ~[spring-webmvc-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
用2.0.7没有问题
你使用的哪个版本?
这边也是一样预编译后 decode没问题 encode有问题,用了2.0.7后就可以了。 尴尬的问题是之前用的最新的2.1.4,也就是说2.1.4还存在这个问题。希望最新版本也能解决这个问题吧