Java Maven NoClassDefFoundError

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

在我的 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,除此之外什么都没有

maven fitnesse
1个回答
0
投票

对最初的评论@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
中指定。

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