0
I am provisioning a kafka connector for SAP Hana. After I provision the connector, I check its status by browsing to http://localhost:8083/connectors/sapHana-source/status, but I see it failed:
{
"name": "sapHana-source",
"connector": {
"state": "RUNNING",
"worker_id": "127.0.1.1:8083"
},
"tasks": [
{
"id": 0,
"state": "FAILED",
"worker_id": "127.0.1.1:8083",
"trace": "java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: scala/runtime/java8/JFunction0$mcV$sp\n\tat com.sap.kafka.connect.source.GenericSourceTask.start(GenericSourceTask.scala:34)\n\tat org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:199)\n\tat org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:175)\n\tat org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:219)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.lang.NoClassDefFoundError: scala/runtime/java8/JFunction0$mcV$sp\n\t... 9 more\nCaused by: java.lang.ClassNotFoundException: scala.runtime.java8.JFunction0$mcV$sp\n\tat java.net.URLClassLoader.findClass(URLClassLoader.java:382)\n\tat java.lang.ClassLoader.loadClass(ClassLoader.java:424)\n\tat org.apache.kafka.connect.runtime.isolation.PluginClassLoader.loadClass(PluginClassLoader.java:104)\n\tat java.lang.ClassLoader.loadClass(ClassLoader.java:357)\n\t... 9 more\n"
}
],
"type": "source"
}
I am provisioning the connector with this command:
curl -H "Accept: application/json" -H "Content-Type: application/json" -sX PUT "localhost:8083/connectors/sapHana-source/config" -d @SapHana_Source_Connector.json | jq
and the contents of SapHana_Source_Connector.json are:
{
"connector.class": "com.sap.kafka.connect.source.hana.HANASourceConnector",
"tasks.max": "1",
"topics":"sap-stock-inv",
"mode": "bulk",
"connection.url": "jdbc:sap://10.80.134.204:30015/?trace=traceFile.txt",
"connection.user": "DSD_USER",
"connection.password": "Init123*",
"sap-stock-inv.table.name": "\"_SYS_BIC\".\"PVH.POSDTA.InventoryVisibility.Store/ODATA_INV_VIS_EAN_NEXT_GR\""
}
When I run this command, I get a success message. (Same JSON is printed back to console). I've also confirmed that I get an error message when I purposely set the connector.class to an invalid value.
Steps I have tried:
- Added this line to /etc/environments file: export CLASSPATH="/home/jpathe/Desktop/confluent-5.2.1/confluent-5.2.1/share/java"
- Added this line to /etc/kafka/connect-distributed.properties and /etc/kafka/connect-standalone.properties: plugin.path=/home/jpathe/Desktop/confluent-5.2.1-web/confluent-5.2.1/share/java
Does anyone know how I can solve the NoClassDefFoundError?
update: the JAR file was compiled on a Mac. The error occurs on an Ubuntu VM with a higher version of Java installed. The error does not happen on the Mac. Next steps: compile the JAR file on Linux and determine if the issue is caused by OS or java version. – RedShirtEnsign – 2019-07-15T07:48:22.463