Apache camel 无法获取自定义驼峰转换器

Apache camel 无法获取自定义驼峰转换器,apache-camel,Apache Camel,我创建了一个具有以下结构的新转换器: 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.ca

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

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文件?当然,将其放入具有确切结构的资源文件夹会将其添加到类路径中,因此可以访问它。

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

com.mycompany
应该是

com.mycompany.MyCustomConverter
这也是我们在本页上所说的:

您是否可以在生成的JAR文件中检查META-INF/services/org/apache/camel目录是否存在,以及TypeConverter文件是否存在(并且它不在META-INF/org.apache.camel之类的目录中)


另外,您使用的运行时环境是什么?您是否运行Camel standalone、Tomcat、OSGi或其他程序?

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

com.mycompany
应该是

com.mycompany.MyCustomConverter
这也是我们在本页上所说的:

您是否可以在生成的JAR文件中检查META-INF/services/org/apache/camel目录是否存在,以及TypeConverter文件是否存在(并且它不在META-INF/org.apache.camel之类的目录中)


另外,您使用的运行时环境是什么?您是否运行Camel standalone、Tomcat、OSGi或其他软件?

谢谢Claus。事实上,我发现我的转换器可以工作。然而,我们的一个测试,通常模仿一切失败,因为它无法找到转换器。我想骆驼测试中有什么东西可以让我模拟出你要呼叫的人。感谢您提供关于显式命名转换器的提示。我们使用的是OSGI环境,并且所讨论的测试类正在扩展CamelBlueprintTestSupport。您能检查一下您在测试包中是否正确生成了正确的META-INF/服务/文件吗?@Claus您能指导一下吗:谢谢Claus。事实上,我发现我的转换器可以工作。然而,我们的一个测试,通常模仿一切失败,因为它无法找到转换器。我想骆驼测试中有什么东西可以让我模拟出你要呼叫的人。感谢您提供关于显式命名转换器的提示。我们使用的是OSGI环境,而相关的测试类正在扩展CamelBlueprintTestSupport。您能否检查您是否在测试包中正确生成了正确的META-INF/services/文件?@Claus您能否提供以下指导: