java.lang.NoClassDefFoundError:org / w3c / tidy / Tidy,Maven项目

时间:2012-08-23 23:10:00

标签: java java-ee maven-2

我正在尝试从命令提示符

运行Maven 2中构建的java应用程序

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

然后我做了: -

java -cp target / 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放在classpath变量

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

有两种选择:

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

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

如果MainClass在Manifest.mf中设置

MANIFEST.MF在

... Main-Class:package.to.your.MainClass&lt; - NEWLINE !!!