在我的 Maven 项目中,我尝试使用以下命令运行 FitNesse jar:
PS C:\path\to\fitnesse\repository\org\fitnesse\fitnesse\20231203> java -jar fitnesse-20231203.jar -p 8080
但是我收到错误,即使我已经下载了 apache commons lang3 并添加到 Maven 依赖项
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.14.0</version>
</dependency>
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
at fitnesse.util.StringUtils.replace(StringUtils.java:37)
at fitnesse.testsystems.slim.tables.SlimTableFactory.addTableType(SlimTableFactory.java:54)
at fitnesse.testsystems.slim.tables.SlimTableFactory.<init>(SlimTableFactory.java:26)
at fitnesse.ContextConfigurator.makeFitNesseContext(ContextConfigurator.java:152)
at fitnesseMain.FitNesseMain.launchFitNesse(FitNesseMain.java:73)
at fitnesseMain.FitNesseMain.launchFitNesse(FitNesseMain.java:60)
at fitnesseMain.FitNesseMain.main(FitNesseMain.java:40)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 7 more
我尝试只下载 commons lang3 jar,除此之外什么都没有
对最初的评论@Martin 表示抱歉,因为它导致了错误的方向。
我可以看到你有两个选择。要像命令行显示的那样运行它,请查看创建一个“胖”jar - 这篇文章详细介绍了这一点。
另一个选项是向您的
pom.xml
添加执行功能。这会是这样的:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<mainClass>your.package.and.MainClass</mainClass>
</configuration>
</plugin>
</plugins>
</build>
在此示例中,您将执行
mvn clean package
和 mvn exec:java
来运行您的课程。如果您需要传递命令行参数,如您所示,它将类似于 mvn exec:java -Dexec.args="-p 8080"
或者可以在您的 pom.xml
中指定。