1

我正在尝试从命令提示符运行在 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 放在类路径变量中

4

2 回答 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
于 2012-08-24T07:11:27.320 回答
0

有两种选择:

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

或者

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

如果 MainClass 在 Manifest.mf 中设置

清单.mf

... 主类:package.to.your.MainClass <- NEWLINE!!!

于 2012-08-24T09:06:37.000 回答