【问题标题】:Dozer file not found exception找不到推土机文件异常
【发布时间】:2011-12-03 01:35:39
【问题描述】:

我正在尝试执行下面的推土机示例。我的 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}));

【问题讨论】:

    标签: dozer


    【解决方案1】:

    好的。我解决了这个..

    我将文件放在resources/META-INF/dozerBeanMapping.xml 并使用以下方式访问该文件:

    String file = "META-INF/dozerBeanMapping.xml";
    
    DozerBeanMapper mapper = new DozerBeanMapper(Arrays.asList(new String[]{file}));
    

    我希望这对你们也有帮助。

    【讨论】:

      【解决方案2】:

      您正在使用String file = "C:/...",错误中提到它不能将 C 识别为有效协议。

      您应该尝试改用file://C:/... - 它可能会有所帮助。如果不行,请尝试使用双反斜杠 (C:\\UnitTest\\...),如果不行,只需将文件上传到某处

      【讨论】:

      • 我真的怀疑您在使用 file:// URL 时收到“未知协议:c”错误。
      • 它使用正斜杠而不是反斜杠进行了少量修正。字符串文件 = "file:\\C:\\temp\\mapping.xml"; DozerBeanMapper 映射器 = new DozerBeanMapper(Arrays.asList(new String[]{file})); TargetEmployee destObject = mapper.map(sourceEmp, TargetEmployee.class);
      • 那些是反斜杠 mate :-)
      • :-) 我知道,但它适用于 file:\\C:\\ 而不是 file://C://
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多