Search code examples
javaamazon-ec2aws-sdkamazon-data-pipeline

AWS Data Pipeline - Task Runner running java 9 Ubuntu EC2


java 9.0.4 Java(TM) SE Runtime Environment (build 9.0.4+11) Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)

Once I complete the required previous configuration I'm trying to start my task runner with:

java -jar TaskRunner-1.0.jar --config ~/taskrunner/credentials.json --workerGroup=<group name> --region=us-east-1 --logUri=s3://<my bucket>/logs_datapipeline

Here is the error I'm getting:

log4j:WARN No appenders could be found for logger (amazonaws.datapipeline.objects.PluginModule).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by private.com.google.inject.internal.cglib.core.$ReflectUtils$2 (file:/home/ubuntu/taskrunner/TaskRunner-1.0.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of private.com.google.inject.internal.cglib.core.$ReflectUtils$2
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Starting log pusher...
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
at private.com.amazonaws.util.Base64.encodeAsString(Base64.java:39)
at private.com.amazonaws.auth.AbstractAWSSigner.signAndBase64Encode(AbstractAWSSigner.java:78)
at private.com.amazonaws.auth.AbstractAWSSigner.signAndBase64Encode(AbstractAWSSigner.java:67)
at private.com.amazonaws.services.s3.internal.S3Signer.sign(S3Signer.java:173)
at private.com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:816)
at private.com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:609)
at private.com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:378)
at private.com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:340)
at private.com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:289)
at private.com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3821)
at private.com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3773)
at private.com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:610)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at private.com.amazonaws.services.datapipeline.retrier.RetryProxy.invokeInternal(RetryProxy.java:36)
at private.com.amazonaws.services.datapipeline.retrier.RetryProxy.invoke(RetryProxy.java:48)
at com.sun.proxy.$Proxy27.listObjects(Unknown Source)
at amazonaws.datapipeline.logpusher.Uploader.listFiles(Uploader.java:140)
at amazonaws.datapipeline.logpusher.LogPusher.populateState(LogPusher.java:185)
at amazonaws.datapipeline.logpusher.LogPusher.addLogItem(LogPusher.java:93)
at amazonaws.datapipeline.logpusher.LogPusherModule.providesLogPusher(LogPusherModule.java:65)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at private.com.google.inject.internal.ProviderMethod.get(ProviderMethod.java:104)
at private.com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
at private.com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at private.com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
at private.com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at private.com.google.inject.Scopes$1$1.get(Scopes.java:65)
at private.com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
at private.com.google.inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:978)
at private.com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)
at private.com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:974)
at private.com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1009)
at amazonaws.datapipeline.taskrunner.Main.initLogPusher(Main.java:75)
at amazonaws.datapipeline.taskrunner.Main.runTaskRunner(Main.java:44)
at amazonaws.datapipeline.taskrunner.Main.main(Main.java:39)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 41 more

I appreciate your support. thanks so much


Solution

  • After struggle a bit with this issue I notice that AWS has an incompatibility issue for the taskrunner.jar with JAVA 9 and to fix it up I just downgraded my version and was running smoothly:

    new version: enter image description here