报错还有java grpc issue - java.lang.NoClassDefFoundError: io/grpc/BindableService
出现这个问题,原因主要有以下三点:
- java版本与javac版本不一致
- 你所使用的库中,有以java开头的包文件
- 运行的java配置错误
解决方法:
针对第一种情况:
使用下面两个命令行检查java版本与javac版本是否一致
java -version
javac -version
若不一致,则卸载java,重新安装配置,注意别漏了环境变量的重新配置!!
mac版本,貌似在/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java路径下,自带了一个java,不知道会不会有影响
针对第二种情况:
- 若这个java包名是自己写的,就改名即可
- 若你是在maven项目(含springboot、mvn等)中出现异常,则可能是你打包成jar包的方式不对,没把那些自带的库给转化掉,为了让你们体验感更加,代码给你们,(点个赞吧,嘻嘻!):
<!--custom package-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<!-- get all project dependencies -->
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<!-- MainClass in mainfest make a executable jar -->
<archive>
<manifest>
<mainClass>主函数路径</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!-- bind to the packaging phase -->
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
但使用上述方式打包成jar包时,应该会多出一个jar包,包名是你原先的包名-jar-with-dependencies.jar,带依赖的jar包嘛!启动它就好。
针对第三种情况
- 如果你是在IDE中遇到这种情况,那估计就是得改下编译器的配置
- 若是在jar包启动时候,遇到这种问题,估计是打包的java版本和启动的,不是同一个java导致的吧!
还有其他情况以及解决办法,可以留言一下吧,会持续更新吧!但基本就是这几种问题了。