'InvalidClassException' error when deploying an ESB Task

Problem Description

A route/service artifact has been published to the Nexus eai_releases repository, and the ESB task points to that artifact. The deployment of the ESB task fails with the following error:

java.rmi.UnmarshalException: Error unmarshaling return; nested exception is: 
    java.io.InvalidClassException: org.apache.karaf.features.internal.util.MultiException; local class incompatible: stream classdesc serialVersionUID =
-9038248499286432666, local class serialVersionUID = 8236675357096212630
...

However, in the Runtime tesb.log, the real error is thrown:

java.io.IOException: Error resolving artifact org.example:TEST:jar:0.1.1: [Could not find artifact org.example:TEST:jar:0.1.1 in defaultlocal
(file:/home/talenduser/.m2/repository/), Could not find artifact org.example:TEST:jar:0.1.1 in tesb.eai_snapshot
(http://nexus_host:8081/nexus/content/repositories/eai_snapshots/), Could not find artifact org.example:TEST:jar:0.1.1 in tesb.release
(http://nexus_host:8081/nexus/content/repositories/releases/), Could not find artifact org.example:TEST:jar:0.1.1 in tesb.snapshot
(http://nexus_host:8081/nexus/content/repositories/snapshots/)]

 

Root Cause

During deployment, Runtime looks for the artifact (wanting to be deployed) in the default local repository (normally located in user-home/.m2/repository/). If Runtime doesn't find it, then it looks in one of the repositories listed in the org.ops4j.pax.url.mvn.repositories parameter set in the org.ops4j.pax.url.mvn.cfg file, located under the Runtime/etc/ folder.

 

In this case, the org.ops4j.pax.url.mvn.repositories parameter appears to be correct because it lists the eai_releases repository, which is where the artifact is located:

org.ops4j.pax.url.mvn.repositories=\
    http://nexus_host:8081/nexus/content/repositories/eai_snapshots@snapshots@id=tesb.eai_snapshot, \
    http://nexus_host:8081/nexus/content/repositories/releases@id=tesb.release, \
    http://nexus_host:8081/nexus/content/repositories/snapshots@snapshots@id=tesb.snapshot, \
    http://nexus_host:8081/nexus/content/repositories/eai_releases@id=tesb.eai_release, \
    http://repo1.maven.org/maven2@id=central

However, on a closer look, you can see some extra spaces, right after the backslash, at the end of the snapshots line.

extra_spaces_mvn_list.jpg

Runtime stopped looking in the other repositories (eai_releases) because it considers those spaces as the end of the list. There should not be any extra characters after the backslashes.

 

Solution

Remove these spaces and save the file. You don't need to restart Runtime because the changes are dynamic. The deployment should succeed now.

Version history
Revision #:
6 of 6
Last update:
‎08-20-2019 02:10 PM
Updated by: