【问题标题】:java.lang.NoClassDefFoundError: org/w3c/tidy/Tidy , Maven projectjava.lang.NoClassDefFoundError: org/w3c/tidy/Tidy,Maven 项目
【发布时间】:2012-08-19 12:52:12
【问题描述】:

我正在尝试从命令提示符运行在 Maven 2 中构建的 java 应用程序

在命令提示符下,我执行了“mvn package”并在应用程序的目标文件夹中获取了 jar

然后我做了:-

java -cp 目标/TempestApp.jar foo.App

我得到了异常:-

Exception in thread "main" java.lang.NoclassDefFoundError: org/w3c/tidy/Tidy
      at foo.htmltoxml.HtmlToXMLConvertor(htmltoxml.java:29)
      at foo.app.main(App.java:35)

该应用程序包含一个 JTidy。 POM.xml 中提到了谁的依赖关系

应用程序在 Eclipse 中运行良好,但不能从命令提示符运行。

我什至尝试将 JTidy jar 放在类路径变量中

【问题讨论】:

  • 你有什么maven依赖代码?

标签: java jakarta-ee maven-2


【解决方案1】:

您可以让 maven 使用类路径中的所有 jar 启动您的应用程序。使用exec-maven-plugin 非常简单。

将此添加到您的pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>java</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>com.company.package.YourApplicationMain</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

那么当你想在同一个命令中构建和执行时:

mvn package exec:java

如果您只想运行应用程序:

mvn exec:java

【讨论】:

    【解决方案2】:

    有两种选择:

    java -cp /path/to/jitidy.jar;target/TempestApp.jar TempestMainClass

    java -cp /path/to/jitidy.jar -jar target/TempestApp.jar

    如果在 Manifest.mf 中设置了 MainClass

    清单.mf

    ... 主类:package.to.your.MainClass

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-18
      • 2012-03-17
      • 2012-05-01
      • 1970-01-01
      • 2017-02-19
      • 2016-04-20
      • 2022-01-28
      相关资源
      最近更新 更多