java.lang.ClassNotFoundException:org.mockserver.version.Version

问题描述 投票:0回答:1

我正在尝试从 shell 中使用

mockserver-netty-5.13.2
启动模拟服务器, java版本: 11.0.9

粗略的 shell 代码如下:

java -version
echo "start shell before java -jar line"
java -jar ./mockserver-netty-5.13.2.jar -serverPort 9090 -logLevel DEBUG &> ${DIR}/mockserver.log 

java -jar ./mockserver-netty-5.13.2.jar -serverPort 9090

抛出的异常
Exception in thread "main" java.lang.NoClassDefFoundError: org/mockserver/version/Version
    at org.mockserver.cli.Main.<clinit>(Main.java:27)
Caused by: java.lang.ClassNotFoundException: org.mockserver.version.Version
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 1 more

有人遇到过这个问题并解决了吗? 任何帮助将不胜感激!!!

java classnotfoundexception mockserver mockserver-netty
1个回答
0
投票

我能够在与您非常相似的环境中复制该问题。 该问题是由于您使用了错误的 jar 引起的。 要从命令行运行

mockserver
,您应该使用
-shaded
jar,其中包含它的依赖项。 您使用的 jar 不包含所需的依赖项,并且如果不手动提供它们作为
classpath
的一部分,则不应在命令行中运行它。 你得到的错误

Caused by: java.lang.ClassNotFoundException: org.mockserver.version.Version

非常支持这个结论,并告诉您当您运行这个特定的 jar 时,未提供

org.mockserver.version.Version
类。
这里,是官方文档,指示您应该使用阴影 jar 从命令行运行模拟服务器。
在这里您可以下载模拟服务器
5.13.2
阴影jar。 然后,像这样运行

java -jar ./mockserver-netty-5.13.2-shaded.jar -serverPort 9090 -logLevel DEBUG &> ${DIR}/mockserver.log 

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.