【问题标题】:error in creating executable jar in a Maven Project在 Maven 项目中创建可执行 jar 时出错
【发布时间】:2014-10-28 13:28:19
【问题描述】:

我创建了一个 maven 项目并使用 testng 在其中编写测试。我还使用 mvn package 命令创建了一个可执行 jar,但在执行时出错。我实际上无法弄清楚错误。请帮我解决这个问题。

$java -jar apitesting1-0.0.1-SNAPSHOT.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: org/testng/ITestListener
Caused by: java.lang.ClassNotFoundException: org.testng.ITestListener
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: apitesting1.apitesting1.App. Program will exit.

这是我的主要课程

public class myClass 
{
    public static void main( String[] args )
    {

    }
}

这是我的 pom.xml

<modelVersion>4.0.0</modelVersion>
<groupId>abc</groupId>
<artifactId>abc</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<build> <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.2</version>
                 <executions> <execution>
                                 <goals>
                                     <goal>test-jar</goal>
                                 </goals>
                              </execution>
                 </executions>

                <configuration>
                    <archive>
                        <manifest>
                           <addClasspath>true</addClasspath>
                                <mainClass>abc.abc.myClass</mainClass>
                        </manifest>
                    </archive>
                </configuration>
          </plugin>

我是 Maven 新手.. 并且从各个地方复制了 pom.xml 的一些内容(特别是)。如果有任何冗余数据或标签,请告诉我。但是我觉得有..请帮忙。

谢谢:)

【问题讨论】:

    标签: java eclipse maven testng


    【解决方案1】:

    主类元素必须包含类的名称。你的班级名称是apitesting1.apitesting1.App,而不是src/main/java/apitesting1.apitesting1.App.java

    【讨论】:

    • 您现在在编辑的问题中显示的错误只是表明您正在尝试执行一个不存在的 jar 文件。
    • 抱歉刚刚造成的混乱......现在看到错误plz
    • 现在,找到了您的主类,但它依赖于不在类路径中的 TestNG 类。阅读docs.oracle.com/javase/tutorial/deployment/jar/downman.html
    • 我读到了那个链接......明白了......但我无法得到缺少的东西......我读了这个 stackoverflow.com/questions/8317147/… 帖子但仍然,没有结果.. 所以,如果你能给我一些建议......你能验证 中的数据吗?我的测试用例是用 AppTest.java 编写的。我还需要参考类文件或源文件吗?我正准备尝试任何事情......:)
    • 您的清单文件包含什么?您是否检查过清单的类路径是否包含所有必需的 jar 文件?您是否检查过所有这些 jar 文件确实位于清单类路径中指定的相对于可执行 jar 文件的位置?
    猜你喜欢
    • 2012-01-09
    • 2021-01-29
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 2017-04-21
    • 2016-06-10
    相关资源
    最近更新 更多