我正在尝试运行一个使用 protobuf.jar 的 java 程序,但我不断收到此错误。
我已经在 linux 中设置了类路径变量,以便:
CLASSPATH=/home/.../src/PlaceServer.class:/home/.../src/protobuf.jar:/home/.../src
export CLASSPATH
但是当我读入 jar 后在命令行中运行我的程序时。
java PServer
我明白了:
java.lang.NoClassDefFoundError: com/google/protobuf/MessageOrBuilder
但是,当我运行另一个也读取相同 jar 的程序时,这个程序称为 BServer
java BServer
它工作得很好,并且按照我的要求正确。我什至尝试在这些命令下运行
java -cp .protobuf.jar PServer
而且对于 PServer 仍然不起作用。
但是,如果我从命令行(也在任一操作系统的 Eclipse 中)在 Macbook 上运行相同的程序,我不会收到此异常,并且一切正常。
感谢您的帮助!
要消除此错误,需要检查几件事:
- 验证所有必需的 Java 类是否都包含在应用程序的类路径中。最常见的错误是在开始执行依赖于某些外部库的 Java 应用程序之前没有包含所有必需的类。
- 应用程序的类路径是正确的,但类路径环境变量在应用程序执行之前被覆盖
当您在 Eclipse 中运行应用程序时,IDE 通过使用项目文件夹内的 .classpath 文件来解决此问题。当您构建应用程序(创建 jar)时,您可能会意外地省略此类,或更改其位置。
您需要做的是首先打开 jar,并确保相关类实际上位于 jar 内,位于同一路径中。然后,浏览上面的列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)