0

我创建了一个具有以下结构的新转换器:

package com.mycompany;

@Converter
public final class MyCustomConverter {
  @Converter
  public static TypeB convert(TypeA typeA) {
  // do the conversion
  }
}

我还在我的src/main/java/resources文件夹中创建了以下包,META-INF.services.org.apache.camel并在其中创建了一个TypeConverter文件,上面写着:

com.mycompany

在我的路线中,TypeA我得到了:

<convertBodyTo type="com.mycompany.TypeB" />

然而我的测试总是无法获取文件,因此找不到转换器,除了:

引起:org.apache.camel.NoTypeConversionAvailableException:没有类型转换器可用于从类型:com.mycompany.TypeA 转换为所需类型:com.mycompany.TypeB,值为 TypeA[value1="blah"]

我是否打算做其他事情来让我的测试获取 TypeConverter 文件?当然,将它放在具有确切结构的资源文件夹中会将其添加到类路径中,因此可以访问它。

4

1 回答 1

3

建议在 TypeConverter 文件中列出所有类型转换器的 FQN,例如

com.mycompany

应该

com.mycompany.MyCustomConverter

这也是我们在这个页面上说的:http: //camel.apache.org/type-converter.html

你能检查一下你生成的 JAR 文件,META-INF/services/org/apache/camel 目录是否存在,TypeConverter 文件是否存在(并且它不在 META-INF/org 之类的目录中.apache.camel)。

另外,您使用的运行时环境是什么?你是独立运行 Camel、Tomcat、OSGi 还是其他东西?

于 2013-07-17T06:56:07.267 回答