簡體   English   中英

Maven Junit測試案例因java.lang.NoClassDefFoundError崩潰:org / slf4j / LoggerFactory

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

我一直在嘗試為服務實現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());
    }
}

發生錯誤的服務類別:

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
    }

以下是在運行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)

我的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>

推土機所需的依賴關系已通過mvndependency:resolve解決。

我應該降級到較低版本的推土機,然后檢查其是否有效?

這兩個問題( 我該如何解決java.lang.NoClassDefFoundError:org / slf4j / LoggerFactory?使用maven的推土機 )的問題似乎沒有給我解決方案,或者我錯過了什么? 任何幫助都會很棒。

重新聲明您的推土機依存關系,如下所示:

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

dozer-5.3.2-pom將 SLF4J聲明為傳遞依賴項,因此,一旦您從Dozer聲明中刪除了不需要的排除項,它將立即為您提供。

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

更新推土機版本並進行maven編譯/安裝,除了擺脫了排斥之外,還為我解決了該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM