简体   繁体   English

Maven Junit测试案例因java.lang.NoClassDefFoundError崩溃:org / slf4j / LoggerFactory

[英]Maven Junit test case crashing with java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory

I have been trying to implement a Junit test case for a service which returns what are the different type of resources as shown in the Tester code below: 我一直在尝试为服务实现Junit测试用例,该服务返回如下所示的Tester代码中所示的不同类型的资源:

public class Tester {

    MyInfoService myInfoService=null;

    @Before
    public void setUp() throws Exception{
        myInfoService = new MyInfoService();
        System.out.println(" @#$#@ myInfoService ="+myInfoService.getAllMyResourceTypes().size());
    }

    @Test
    public void testResTypeAll() {
        List<MyTypeInfoBean> resTypeBeanList = myInfoService.getAllMyResourceTypes();
        assertEquals("Testing size for res type...", 18, resTypeBeanList.size());
    }
}

Service class where the error occurs: 发生错误的服务类别:

public class MyInfoService implements MyInfoServiceRemote {

           // some code here

            @Override
            public List<MyTypeInfoBean> getAllMyResourceTypes() {
            List<MyResourceTypeInfoDTO> resourceList = new ArrayList<>();
            List<MyTypeInfoBean> resourceListBean = new ArrayList<>();
            MyResourceTypeInfoDTO myResTypeInfoDTO = null;
            try {
            HashMap<Integer,MyConstantsUtilClass.MyResourceTypes> restypemap =      (HashMap<Integer,   MyResourceTypes>)MyConstantsUtilClass.MyResourceTypes.getRestypemap();
            Set<Map.Entry<Integer, MyConstantsUtilClass.MyResourceTypes>>   restypemapEntrySet = restypemap.entrySet();
            for (Entry<Integer, MyResourceTypes> entry : restypemapEntrySet) {
                myResTypeInfoDTO = new MyResourceTypeInfoDTO();
                // code to read the entry values and populate my DTO
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            // size gets printed, so everything is fine till now
            System.out.println("@#$#@ resourceList ="+resourceList.size());
        // The resource list is printed correctly above.The problem begins below
                Mapper mapper=null;
                if (resourceList != null) {
                    System.out.println("resourceList is not null object");
                    System.out.print("Original contents of al: ");
                    try {
                // this does not work and get a NoClassDefError
                mapper= DozerBeanMapperSingletonWrapper.getInstance();          } catch(Exception e) {
                        e.printStackTrace();
                }
                Iterator<MyResourceTypeInfoDTO> itr = resourceList.iterator();
                while (itr.hasNext()) {
                    MyResourceTypeInfoDTO element = (MyResourceTypeInfoDTO)                     itr.next();
                    if (mapper == null)
                    System.out.println("Mapper is  NULL");
                    MyTypeInfoBean beanElement = mapper.map(element, MyTypeInfoBean.class);
                    resourceListBean.add(beanElement);
                    }
            return resourceListBean;
            }
    // other methods here
    }

Below is the error log I get on running the Junit test case: 以下是在运行Junit测试用例时遇到的错误日志:

java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at org.dozer.DozerBeanMapper.<clinit>(DozerBeanMapper.java:58)
    at org.dozer.DozerBeanMapperSingletonWrapper.getInstance(DozerBeanMapperSingletonWrapper.java:43)
at com.inv.service.MyInfoService.getAllResourceTypes(MyInfoService.java:508)
at com.bel.tropo.tester.Tester.setUp(Tester.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

My pom.xml file has the dozer dependency correctly mentioned as : 我的pom.xml文件具有推土机相关性,正确提及为:

<dependency>
            <groupId>net.sf.dozer</groupId>
            <artifactId>dozer</artifactId>
            <version>5.3.2</version>
            <exclusions>
                <exclusion>
                    <groupId>*</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
</dependency>

The dependencies required by dozer are already resolved through mvn dependency:resolve. 推土机所需的依赖关系已通过mvndependency:resolve解决。

Should I downgrade to a lower version of dozer and check if it works? 我应该降级到较低版本的推土机,然后检查其是否有效?

These two ( How can I resolve java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory? and dozer with maven ) questions don't seem to give me a solution or am I missing something? 这两个问题( 我该如何解决java.lang.NoClassDefFoundError:org / slf4j / LoggerFactory?使用maven的推土机 )的问题似乎没有给我解决方案,或者我错过了什么? Any help would be great. 任何帮助都会很棒。

Restate your dozer dependency as follows: 重新声明您的推土机依存关系,如下所示:

<dependency>
    <groupId>net.sf.dozer</groupId>
    <artifactId>dozer</artifactId>
    <version>5.3.2</version>
</dependency>

The dozer-5.3.2-pom declares SLF4J as a transitive dependency so it will be provided for you as soon as you remove the unwanted exclusions from your Dozer declaration. dozer-5.3.2-pom将 SLF4J声明为传递依赖项,因此,一旦您从Dozer声明中删除了不需要的排除项,它将立即为您提供。

<dependency>
<groupId>
net.sf.dozer
</groupId> 
<artifactId>
dozer
</artifactId>
<version>
5.5.1
</version>
</dependency>

Updating the dozer version and doing a maven compile/install solved it for me besides getting rid of exclusions. 更新推土机版本并进行maven编译/安装,除了摆脱了排斥之外,还为我解决了该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 java.lang.NoClassDefFoundError: OSGi 中的 org/slf4j/LoggerFactory - java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory in OSGi 休眠-java.lang.NoClassDefFoundError:org / slf4j / LoggerFactory - Hibernate - java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 问题 - java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory problem Slf4j 和 Logback 错误:java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory - Slf4j and Logback error: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory Java + Maven +在线程“main”中生成可执行jar +异常java.lang.NoClassDefFoundError:org / slf4j / LoggerFactory - Java + Maven + make executable jar + Exception in thread “main” java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 依赖“ logback-classic”的Maven仍然给出“ java.lang.NoClassDefFoundError:org / slf4j / LoggerFactory”异常 - Maven with dependency on “logback-classic” still gives “java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory” exception Java:线程“ main”中的异常java.lang.NoClassDefFoundError:org / slf4j / LoggerFactory - Java: Exception in thread “main” java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory Spring工具套件中的线程“ main”中的异常java.lang.NoClassDefFoundError:org / slf4j / LoggerFactory - Exception in thread “main” java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory in Spring tool suite Gradle-线程“ main”中的异常java.lang.NoClassDefFoundError:org / slf4j / LoggerFactory - Gradle - Exception in thread “main” java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory XUGGLE ERROR:线程“main”中的异常java.lang.NoClassDefFoundError:org / slf4j / LoggerFactory - XUGGLE ERROR: Exception in thread “main” java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM