4

I am trying to execute below dozer example. my xml file is located in the same location as my java file, but i am getting the file not found exception

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)

If i give the complete the file path it is working but i am getting the below exception

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)

source code

    String file = "C:/UnitTest/Dozer/src/com/mapping/mapping.xml";
    DozerBeanMapper mapper = new DozerBeanMapper(Arrays.asList(new String[]{file}));
Tom van der Woerdt
  • 29,532
  • 7
  • 72
  • 105
Rafi
  • 161
  • 3
  • 5
  • 7

2 Answers2

7

Ok. I solved this..

I put the file in resources/META-INF/dozerBeanMapping.xml and accessed the file by using:

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

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

I hope this will help you guys as well.

Mualig
  • 1,444
  • 1
  • 19
  • 42
user1393631
  • 91
  • 2
  • 7
0

You're using String file = "C:/..." and the error mentions it doesn't recognize C as a valid protocol.

You should try using file://C:/... instead - it may help. If that doesn't, try using double backslashes (C:\\UnitTest\\...) and if that doesn't work just upload the file somewhere

Tom van der Woerdt
  • 29,532
  • 7
  • 72
  • 105
  • 2
    I really doubt that you are getting a "unknown protocol: c" error when you use a file:// URL. – Tom van der Woerdt Dec 03 '11 at 21:45
  • 1
    It worked with little correction with forward slashes instead of backward slashes. String file = "file:\\C:\\temp\\mapping.xml"; DozerBeanMapper mapper = new DozerBeanMapper(Arrays.asList(new String[]{file})); TargetEmployee destObject = mapper.map(sourceEmp, TargetEmployee.class); – Rafi Dec 05 '11 at 09:24
  • 1
    Those are backward slashes mate :-) – Tom van der Woerdt Dec 05 '11 at 10:24
  • 1
    :-) i know but it worked with file:\\C:\\ not with file://C:// – Rafi Dec 05 '11 at 13:23