Файл Dozer не найден, исключение

Я пытаюсь выполнить приведенный ниже пример бульдозера. мой xml-файл находится в том же месте, что и мой java-файл, но я получаю исключение: файл не найден

Exception in thread "main" org.dozer.MappingException: Unable to locate dozer mapping file [dozerMapping.xml] in the classpath!
    at org.dozer.util.MappingUtils.throwMappingException(MappingUtils.java:87)
    at org.dozer.util.MappingValidator.validateURL(MappingValidator.java:63)
    at org.dozer.loader.CustomMappingsLoader.loadFromFiles(CustomMappingsLoader.java:101)
    at org.dozer.loader.CustomMappingsLoader.load(CustomMappingsLoader.java:56)
    at org.dozer.DozerBeanMapper.loadCustomMappings(DozerBeanMapper.java:213)
    at org.dozer.DozerBeanMapper.getMappingProcessor(DozerBeanMapper.java:186)
    at org.dozer.DozerBeanMapper.map(DozerBeanMapper.java:111)
    at com.mapping.CopyAttributes.main(CopyAttributes.java:28)

Если я укажу полный путь к файлу, он работает, но я получаю следующее исключение

Exception in thread "main" org.dozer.MappingException: java.net.MalformedURLException: unknown protocol: c
    at org.dozer.util.MappingUtils.throwMappingException(MappingUtils.java:82)
    at org.dozer.util.ResourceLoader.getResource(ResourceLoader.java:57)
    at org.dozer.util.DefaultClassLoader.loadResource(DefaultClassLoader.java:44)
    at org.dozer.util.MappingValidator.validateURL(MappingValidator.java:61)
    at org.dozer.loader.CustomMappingsLoader.loadFromFiles(CustomMappingsLoader.java:101)
    at org.dozer.loader.CustomMappingsLoader.load(CustomMappingsLoader.java:56)
    at org.dozer.DozerBeanMapper.loadCustomMappings(DozerBeanMapper.java:213)
    at org.dozer.DozerBeanMapper.getMappingProcessor(DozerBeanMapper.java:186)
    at org.dozer.DozerBeanMapper.map(DozerBeanMapper.java:111)
    at com.mapping.CopyAttributes.main(CopyAttributes.java:28)
Caused by: java.net.MalformedURLException: unknown protocol: c
    at java.net.URL.<init>(Unknown Source)
    at java.net.URL.<init>(Unknown Source)
    at java.net.URL.<init>(Unknown Source)
    at org.dozer.util.ResourceLoader.getResource(ResourceLoader.java:55)

исходный код

    String file = "C:/UnitTest/Dozer/src/com/mapping/mapping.xml";
    DozerBeanMapper mapper = new DozerBeanMapper(Arrays.asList(new String[]{file}));

person Rafi    schedule 03.12.2011    source источник


Ответы (2)


Ok. я решил это..

Я поместил файл в resources/META-INF/dozerBeanMapping.xml и получил доступ к файлу, используя:

String file = "META-INF/dozerBeanMapping.xml";

DozerBeanMapper mapper = new DozerBeanMapper(Arrays.asList(new String[]{file}));

Я надеюсь, что это поможет и вам, ребята.

person user1393631    schedule 02.07.2012

Вы используете String file = "C:/...", и в ошибке упоминается, что он не распознает C как допустимый протокол.

Вы должны попробовать вместо этого использовать file://C:/... - это может помочь. Если это не так, попробуйте использовать двойную обратную косую черту (C:\\UnitTest\\...), а если это не сработает, просто загрузите файл куда-нибудь.

person Tom van der Woerdt    schedule 03.12.2011
comment
Я действительно сомневаюсь, что вы получаете ошибку неизвестного протокола: c при использовании URL-адреса file://. - person Tom van der Woerdt; 04.12.2011
comment
Это работало с небольшой исправлением косой черты вперед вместо косой черты назад. Строковый файл = файл:\\C:\\temp\\mapping.xml; Сопоставитель DozerBeanMapper = новый DozerBeanMapper (Arrays.asList (новая строка [] {файл})); TargetEmployee destObject = mapper.map(sourceEmp, TargetEmployee.class); - person Rafi; 05.12.2011
comment
Это обратная косая черта, приятель :-) - person Tom van der Woerdt; 05.12.2011
comment
:-) я знаю, но он работал с файлом:\\C:\\ не с файлом://C:// - person Rafi; 05.12.2011