当前位置: 首页 > 知识库问答 >
问题:

蚂蚁测试:异常在线程"main"java.lang.NoClassDefFoundError: com/beust/j指挥官/参数异常

顾光明
2023-03-14

测试(project-tests.jar):

package sample;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.testng.annotations.Test;
import utils.Base;

public class SampleTest {
    @Test
    public void Test() {
        log.info("Sample Test called successfully.");

        log.info("Invoking Base Method");
        Base b = new Base();
        b.testMethod();
    }
}

Util(存在于project.jar中):

package utils;

import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.util.Map.Entry;

public class Base {
    public void testMethod() {
        log.info("Test method in utils.Base class called.");
    }
}

假设日志已经在两个类中创建并可用。

建筑xml:

<project default="TestNGSimpleTest">

    <path id="main_cp">
        <pathelement location="dependency/testng-6.9.10.jar"/>
        <pathelement location="dependency"/>
        <pathelement location="."/>
    </path>

    <taskdef name="testng" classpathref="main_cp"
             classname="org.testng.TestNGAntTask" />

    <target name="test">
        <testng classpathref="main_cp" >
            <classfileset dir="." includes="sample/*.class"/>
        </testng>
    </target>

</project>

目标目录结构:

./dependency/{all-dependencies}.jar
./project.jar
./project-tests.jar
./build.xml

{all-依赖}包括:

bsh-1.3.0.jar
bsh-2.0b4.jar
commons-beanutils-1.7.0.jar
commons-beanutils-core-1.8.0.jar
commons-collections-3.2.1.jar
commons-configuration-1.6.jar
commons-digester-1.8.jar
commons-lang-2.4.jar
commons-logging-1.1.1.jar
jcommander-1.48.jar
testng-6.9.10.jar

当我从IDE运行SampleTest时,它运行正常,但是当我尝试使用ant(ant-v test)运行它时,我遇到了以下错误:

[testng] The ' characters around the executable and arguments are
[testng] not part of the command.
[testng] Error: A JNI error has occurred, please check your installation and try again
[testng] Exception in thread "main" java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException
[testng]    at java.lang.Class.getDeclaredMethods0(Native Method)
[testng]    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
[testng]    at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
[testng]    at java.lang.Class.getMethod0(Class.java:3018)
[testng]    at java.lang.Class.getMethod(Class.java:1784)
[testng]    at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
[testng]    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
[testng] Caused by: java.lang.ClassNotFoundException: com.beust.jcommander.ParameterException
[testng]    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
[testng]    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[testng]    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
[testng]    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[testng]    ... 7 more
[testng] The tests failed.

我认为问题在于构建。xml(因为我可以在IDE中运行它),但无法找出这个错误的原因(java.lang.NoClassDefFoundError:com/beust/jcommander/ParameterException)以及如何修复它。我是否错误地指定了类文件集?我该怎么跑?

通过其他的线程,认为testng jar可能是损坏的,没有j指挥官jar,无效的类路径-尝试了它们,但没有帮助。

共有1个答案

丁雅懿
2023-03-14

要直接回答这个问题,似乎你必须包括

<pathelement location="dependency/jcommander-1.48.jar"/>

main_cp中。

这个问题重复了一个老问题,即ant突然无法运行TestNG测试([TestNG]原因是:java.lang.ClassNotFoundException:com.beust.jcommander.ParameterException),其答案似乎都过时了。

事实上,似乎从很久以来,sonatype快照和github/graddle发行版生成的jar都不包含jcommander。

因此,您必须在传递给testngant标记的路径中添加jcommander jarfile。

您的jcommander版本似乎很旧,新推荐的声明testng任务的方法是:

<taskdef resource="testngtasks" classpath="testng.jar" />
 类似资料:
  • 问题内容: 我想以编程方式调用testng。不蚀插件。 我已经关联了“ testng-6.8.21.jar”并通过eclipse运行,我在以下代码下运行: 低于异常。我如何克服这个例外。 问题答案: 更改: 通过: 所有代码是 TestNG代码是: 控制台结果:

  • 问题内容: 当我按如下方式运行程序时,我遇到了异常, java -jar MQprogram.jar 我已经正确设置了classpath,它引用了所有必需的jar,“ com.ibm.mq.jmqi.jar”也引用了具有MQException的classpath。 我仍然不清楚错误在哪里。 问题答案: 这几乎总是由客户端安装不完整和/或CLASSPATH问题共同引起的。许多人抓住了jar文件,而不

  • mvn清洁编译 然后,为了执行jar,我运行了以下命令: Java-CP target/classes org.wso2.adaptive_concurrency_control.adaptiveConcurrencyControl

  • 我从互联网上复制了一个简单的网络爬虫,然后开始在测试类中运行该应用程序。每次我尝试运行该应用程序时,我都会得到“线程中的异常”主“java.lang.NoClassDefFoundError: org/j的/J的”错误。我首先在Libary中导入了一个外部罐子,因为我需要它来处理超文本传输协议的事情。 错误消息: 蜘蛛类 蜘蛛腿类 SpiderTest类 包装com.copiedcrawler;

  • 最近我正在学习Spring框架。所以我正在尝试检查依赖注入在Spring框架中的工作原理。因此,我创建了一个新的java项目并使用基于构造函数XML的配置练习依赖注入代码。运行我的项目后,我收到了这个错误...... 类路径资源[com/mir00r/beans.XML]的XML文档中的第24行无效;嵌套异常为组织。xml。萨克斯。SAXParseException;行号:24;列数:9;cvc复

  • 我正在学习selenium并尝试运行以下代码,但它引发了异常。NoSuchFieldError:空字节数组。请帮助我理解这个简单的程序出了什么问题。 控制台: 异常线程"main"java.lang.NoSuchFieldError:EMPTY_BYTE_ARRAY