我正在尝试从 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
有人遇到过这个问题并解决了吗? 任何帮助将不胜感激!!!
我能够在与您非常相似的环境中复制该问题。 该问题是由于您使用了错误的 jar 引起的。 要从命令行运行
mockserver
,您应该使用 -shaded
jar,其中包含它的依赖项。
您使用的 jar 不包含所需的依赖项,并且如果不手动提供它们作为 classpath
的一部分,则不应在命令行中运行它。
你得到的错误
Caused by: java.lang.ClassNotFoundException: org.mockserver.version.Version
非常支持这个结论,并告诉您当您运行这个特定的 jar 时,未提供
org.mockserver.version.Version
类。5.13.2
阴影jar。
然后,像这样运行
java -jar ./mockserver-netty-5.13.2-shaded.jar -serverPort 9090 -logLevel DEBUG &> ${DIR}/mockserver.log
希望有帮助!