jprotobuf打包采坑记

jprotobuf打包采坑记

先上问题

用maven做构建工具,进行web服务器端应用的打包。报下面错误

Msg$$JProtoBufClass.java:15: 错误: 找不到符号

解决方法

在pom文件plugins中添加

	<plugin>
		<groupId>com.baidu</groupId>
		<artifactId>jprotobuf-precompile-plugin</artifactId>
		<version>1.2.8</version>
		<configuration>
			<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
			<filterClassPackage>com.程序中.proto的路径</filterClassPackage>
		</configuration>
		<executions>
			<execution>
				<phase>compile</phase>
				<goals>
					<goal>precompile</goal>
				</goals>
			</execution>
		</executions>
	</plugin>

在dependencies中添加

<!-- https://mvnrepository.com/artifact/com.baidu/jprotobuf-precompile-plugin -->
<dependency>
    <groupId>com.baidu</groupId>
    <artifactId>jprotobuf-precompile-plugin</artifactId>
    <version>1.2.8</version>
</dependency>

然后 mvn clean package -dmaven.test.skip true,一切都可以愉快的玩耍了。
感谢这个链接: https://github.com/jhunters/jprotobuf.

吐槽下自己

项目中用到了RPC通信,序列化方式采用protobuf,当初项目的基础框架是同事做的,猜想他做到一半才发现还有jprotobuf这个东东,于是临时替换了google的原生支持,但是proto文件都还留在项目里。我完全没注意序列化用了什么方式,业务代码写完准备打包交付的时候麻烦来了,只要涉及到对外TCP通信的服务怎么打包都报错。我尝试了运行环境统一、打包插件替换、jar包版本兼容测试,最后放弃治疗,把原本gradle构建的程序转成了maven,认为一定是自己对gradle不熟导致的。一顿折腾之后才决定看看别人写的框架到底采用了什么技术选型。然后,没到半个小时问题就解决了。原因就是遗留的proto文件导致通信实体没有编译。

浪费了大半天时间得到的教训是,再好的脚手架程序也是别人的,用之前先消化好。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值