设置CLASSPATH但java.lang.NoClassDefFoundError COM /谷歌

2019-10-30 01:48发布

我试图运行使用protobuf.jar一个Java程序,但我不断收到此错误。

我已在linux我的类路径变量,以便:

 CLASSPATH=/home/.../src/PlaceServer.class:/home/.../src/protobuf.jar:/home/.../src
 export CLASSPATH

但后来当我在坛子里看了之后运行我的命令行程序。

 java PServer 

我得到这个:

 java.lang.NoClassDefFoundError: com/google/protobuf/MessageOrBuilder

然而,当我运行另一个程序,也读出同样的罐子,这个叫BServer

 java BServer

它工作正常,正确,我想它。 我甚至尝试这些命令下运行,而不是

 java -cp .protobuf.jar PServer

它仍然没有为P服务器工作。

但是,如果我从(任OS也Eclipse中)在命令行上运行我的MacBook同样的程序我没有得到这个例外,这一切工作正常。

谢谢你的帮助!

Answer 1:

有几件事情要检查摆脱这种错误的:

  • 验证所有必需的Java类都包含在应用程序的类路径。 最常见的错误是不包括所有必需的课程,开始执行有一些外部库的依赖关系的Java应用程序之前。
  • 应用程序的类路径是正确的,但CLASSPATH环境变量是应用程序的执行之前覆盖

当你在Eclipse中运行应用程序时,IDE使用项目文件夹内.classpath文件解决此问题。 当你创建一个应用程序(创建JAR),你可能会不小心忽略这个类,或改变它的位置。

什么,你需要做的是先打开罐子,并确保有问题的类其实是在罐子里,在相同的路径。 然后,上面浏览清单。



文章来源: Classpath set but java.lang.NoClassDefFoundError com/google/protobuf/MessageOrBuilder error?