Вызвано: org.apache.camel.NoTypeConversionAvailableException: Преобразователь типов недоступен для преобразования из типа: java.lang.String в

В настоящее время я переношу свой проект с camel 2.5 на 3.1.0. Также я использую Java 11.0.11 с Apache Maven 3.6.3. Итак, у меня есть класс Java, который расширяет

RouteBuilder

класс из пакета org.apache.camel.builder

В данном классе я пытаюсь установить следующую конфигурацию REST:

public class IvyRouteBuilder extends RouteBuilder {
    protected void enableCors(String path) {
        estConfiguration()
                    .component("spark-rest")
                    .host("0.0.0.0")
                    .port(8087)
                    .bindingMode(RestBindingMode.off)
                    .enableCORS(true)
                    .corsHeaderProperty("Access-Control-Allow-Origin", "*")
                    .corsHeaderProperty("Access-Control-Allow-Headers", "*")
                    .corsHeaderProperty("Access-Control-Allow-Headers", "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization")
                    .corsHeaderProperty("Allow", "GET,OPTIONS,POST,PATCH");
    
        rest(path)
                    .verb("options")
                    .route()
                    .setHeader("Access-Control-Allow-Origin", constant("*"))
                    .setHeader("Access-Control-Allow-Methods", constant("GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, PATCH"))
                    .setHeader("Access-Control-Allow-Headers", constant("Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization"))
                    .setHeader("Allow", constant("GET, OPTIONS, POST, PATCH"));
    }
}

Когда я запускаю Java-приложение из Eclipse, оно работает нормально! Но не могу работать как файл .jar, и я получаю следующую ошибку:

Exception in thread "main" java.lang.IllegalArgumentException: Error parsing [8087] as a java.lang.Integer.
    at org.apache.camel.support.CamelContextHelper.parse(CamelContextHelper.java:457)
    at org.apache.camel.support.CamelContextHelper.parseInteger(CamelContextHelper.java:377)
    at org.apache.camel.model.rest.RestConfigurationDefinition.asRestConfiguration(RestConfigurationDefinition.java:910)
    at org.apache.camel.builder.RouteBuilder.populateRests(RouteBuilder.java:533)
    at org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:434)
    at org.apache.camel.impl.engine.AbstractCamelContext.lambda$addRoutes$0(AbstractCamelContext.java:1160)
    at org.apache.camel.impl.engine.AbstractCamelContext.doWithDefinedClassLoader(AbstractCamelContext.java:2544)
    at org.apache.camel.impl.engine.AbstractCamelContext.addRoutes(AbstractCamelContext.java:1160)
    at com.gtmhub.etl.MainApp.main(MainApp.java:53)
Caused by: org.apache.camel.NoTypeConversionAvailableException: No type converter available to convert from type: java.lang.String to the required type: java.lang.Integer with value 8087
    at org.apache.camel.impl.converter.BaseTypeConverterRegistry.mandatoryConvertTo(BaseTypeConverterRegistry.java:224)
    at org.apache.camel.impl.converter.BaseTypeConverterRegistry.mandatoryConvertTo(BaseTypeConverterRegistry.java:175)
    at org.apache.camel.support.CamelContextHelper.parse(CamelContextHelper.java:454)
    ... 8 more

Я попытался передать ПОРТ в виде строки, но результат тот же!

Как я запускаю приложение:

    public static void main(String... args) throws Exception {
        CamelContext camelContext = new DefaultCamelContext();
        camelContext.setLoadTypeConverters(true);
        
        
        Injector injector = Guice.createInjector(new IvyModule());
        
        camelContext.addRoutes(injector.getInstance(IvyRouteBuilder.class));
        camelContext.addRoutes(injector.getInstance(UtilRoutes.class));
        camelContext.setTracing(false);
        camelContext.start();
 }

Кто-нибудь знает, как я могу это исправить?


person Fortran    schedule 06.07.2021    source источник