Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-15569

Executable fat jar built with Gradle fails with exception

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Information Provided
    • Affects Version/s: 3.5.0
    • Fix Version/s: None
    • Component/s: camel-core
    • Labels:
      None
    • Environment:

      Java

      openjdk version "1.8.0_265"
      OpenJDK Runtime Environment (build 1.8.0_265-8u265-b01-0ubuntu2~18.04-b01)
      OpenJDK 64-Bit Server VM (build 25.265-b01, mixed mode)

       

      Gradle 6.5

      Description

      I'm trying to implement a timer using Camel 3.5 at Gradle project with OpenJDK8 as next

      from("timer://watchexpiration?fixedRate=true&period=600000&delay=0")...
      

      But, after build the fat jar using
      1. Build with:

      ./gradlew build


      2. Run with:

      java -jar build/libs/app.jar

      After that I receive the next error at console

      Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: timer://watchexpiration?delay=0&fixedRate=true&period=600000 due to: Error binding property (delay=0) with name: delay on bean: timer://watchexpiration?delay=0&fixedRate=true&period=600000 with value: 0
          at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:888)
          at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:777)
          at org.apache.camel.support.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:58)
          at org.apache.camel.reifier.AbstractReifier.resolveEndpoint(AbstractReifier.java:177)
          at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:250)
          at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:112)
      

      But If I run using

      ./gradlew run

      then works fine as I expected. I don't want to use any frameworks for this project. I feel this is just a config issue or something is wrong with my configuration I guess.

      How can I fix it?

      build.gradle

       plugins {
          id 'java'
          id 'application'
          id 'com.github.sherter.google-java-format' version '0.8'
      }
      
      repositories {
          jcenter()
      }
      
      dependencies {
          implementation 'com.google.guava:guava:29.0-jre'
          testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.2'
          testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.2'
          // Camel
          compile group: 'org.apache.camel', name: 'camel-core', version: '3.5.0'
          compile group: 'org.apache.camel', name: 'camel-file', version: '3.5.0'
          compile group: 'org.apache.camel', name: 'camel-file-watch', version: '3.5.0'
          compile group: 'org.apache.camel', name: 'camel-xstream', version: '3.5.0'
          compile group: 'org.apache.camel', name: 'camel-gson', version: '3.5.0'
          compile group: 'org.apache.camel', name: 'camel-rest', version: '3.5.0'
          compile group: 'org.apache.camel', name: 'camel-servlet', version: '3.5.0'
          compile group: 'org.apache.camel', name: 'camel-http', version: '3.5.0'
          compile group: 'org.apache.camel', name: 'camel-jackson', version: '3.5.0'
          compile group: 'org.apache.camel', name: 'camel-quartz', version: '3.5.0'
          compile group: 'org.apache.camel', name: 'camel-timer', version: '3.5.0'
      
          compile group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.30'
          compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.30'
      
          // Dev Libs
          compileOnly("org.projectlombok:lombok:1.18.12")
          annotationProcessor("org.projectlombok:lombok:1.18.12")
      
          compile group: 'org.apache.commons', name: 'commons-csv', version: '1.4'
      }
      
      application {
          mainClassName = 'com.eip.App'
      }
      
      configurations {
          // configuration that holds jars to include in the jar
          extraLibs
      }
      
      jar {
          manifest {
              attributes(
                      'Main-Class': 'com.beam.agent.App'
              )
          }
          from {
              configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
          }
      }
      
      test {
          useJUnitPlatform()
      }
      
      googleJavaFormat {
          exclude '**/App.java'
      }
      
      

        Attachments

          Activity

            People

            • Assignee:
              bedla Jan Bednar
              Reporter:
              yogonza524 Gonzalo Mendoza
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: