This topic describes the causes of and solutions to common errors that may occur when you use Object Storage Service (OSS) SDK for Java.
JAR package conflicts
Cause
If a similar output is displayed when you use OSS SDK for Java, your project has a JAR package conflict.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/ssl/TrustStrategy at com.aliyun.oss.OSSClient.<init>(OSSClient.java:268) at com.aliyun.oss.OSSClient.<init>(OSSClient.java:193) at com.aliyun.oss.demo.HelloOSS.main(HelloOSS.java:77) Caused by: java.lang.ClassNotFoundException: org.apache.http.ssl.TrustStrategy at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 3 more
Or
Exception in thread "main" java.lang.NoSuchFieldError: INSTANCE at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52) at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:56) at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<clinit>(DefaultHttpRequestWriterFactory.java:46) at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:82) at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:95) at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:104) at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<clinit>(ManagedHttpClientConnectionFactory.java:62) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager$InternalConnectionFactory.<init>(PoolingHttpClientConnectionManager.java:572) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:174) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:158) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:149) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:125) at com.aliyun.oss.common.comm.DefaultServiceClient.createHttpClientConnectionManager(DefaultServiceClient.java:237) at com.aliyun.oss.common.comm.DefaultServiceClient.<init>(DefaultServiceClient.java:78) at com.aliyun.oss.OSSClient.<init>(OSSClient.java:268) at com.aliyun.oss.OSSClient.<init>(OSSClient.java:193) at OSSManagerImpl.upload(OSSManagerImpl.java:42) at OSSManagerImpl.main(OSSManagerImpl.java:63)
The error occurs due to a version conflict between the Apache HttpClient or Commons HttpClient of your project and Apache HttpClient 4.4.1 of OSS SDK for Java. To view the JAR package and the version that is used in your project, run the mvn dependency:tree command in the directory of the project. The following figure shows that the project uses Apache HttpClient 4.3.
Solution
You can use one of the following methods to resolve the JAR package conflict:
Use the same version of Apache HttpClient. If your project uses a version of Apache HttpClient that conflicts with Apache HttpClient 4.4.1, use Apache HttpClient 4.4.1 and delete all dependencies of other Apache HttpClient versions from the pom.xml file. If your project uses Commons HttpClient, conflicts may also occur. To resolve these conflicts, delete Commons HttpClient.
Resolve dependency conflicts. If your project is dependent on multiple third-party packages and the packages are dependent on different versions of Apache HttpClient, dependency conflicts may occur on your project. To resolve the conflicts, use dependency exclusions. For more information, see Maven Guides.
OSS SDK for Java is dependent on the following package versions. The solution to the conflicts is similar to that for HttpClient.
Missing packages
Cause
If a similar output is displayed when you use OSS SDK for Java, your project may not contain the packages required to compile or run OSS SDK for Java:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/auth/Credentials at com.aliyun.oss.OSSClient.<init>(OSSClient.java:268) at com.aliyun.oss.OSSClient.<init>(OSSClient.java:193) at com.aliyun.oss.demo.HelloOSS.main(HelloOSS.java:76) Caused by: java.lang.ClassNotFoundException: org.apache.http.auth.Credentials at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 3 more
Or
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/protocol/HttpContext at com.aliyun.oss.OSSClient.<init>(OSSClient.java:268) at com.aliyun.oss.OSSClient.<init>(OSSClient.java:193) at com.aliyun.oss.demo.HelloOSS.main(HelloOSS.java:76) Caused by: java.lang.ClassNotFoundException: org.apache.http.protocol.HttpContext at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 3 more
Or
Exception in thread "main" java.lang.NoClassDefFoundError: org/jdom/input/SAXBuilder at com.aliyun.oss.internal.ResponseParsers.getXmlRootElement(ResponseParsers.java:645) at … … at com.aliyun.oss.OSSClient.doesBucketExist(OSSClient.java:471) at com.aliyun.oss.OSSClient.doesBucketExist(OSSClient.java:465) at com.aliyun.oss.demo.HelloOSS.main(HelloOSS.java:82) Caused by: java.lang.ClassNotFoundException: org.jdom.input.SAXBuilder at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 11 more
Dependencies of OSS SDK for Java:
aliyun-sdk-oss-2.2.1.jar
hamcrest-core-1.1.jar
jdom-1.1.jar
commons-codec-1.9.jar
httpclient-4.4.1.jar
commons-logging-1.2.jar
httpcore-4.4.1.jar
log4j-1.2.15.jar
All packages except the log4j-1.2.15.jar package are required to compile or run OSS SDK for Java. However, if you want to enable logging, you must also include the log4j-1.2.15.jar package.
Solution
You can use one of the following methods to add OSS SDK for Java dependencies to your project:
If your project is in Eclipse, import dependencies to Eclipse. For more information, see Installation.
If your project is in Ant, add OSS SDK for Java dependencies to the lib directory.
If you want to use the .javac or .java file, run the -
classpath
or-cp
command to specify the path where OSS SDK for Java dependencies are stored, or store OSS SDK for Java dependencies to classpath.
Connection timeout
Cause
If a similar output is displayed when you run OSS SDK for Java, connection timeout errors may occur due to invalid endpoints or unavailable networks:
com.aliyun.oss.ClientException: SocketException at com.aliyun.oss.common.utils.ExceptionFactory.createNetworkException(ExceptionFactory.java:71) at com.aliyun.oss.common.comm.DefaultServiceClient.sendRequestCore(DefaultServiceClient.java:116) at com.aliyun.oss.common.comm.ServiceClient.sendRequestImpl(ServiceClient.java:121) at com.aliyun.oss.common.comm.ServiceClient.sendRequest(ServiceClient.java:67) at com.aliyun.oss.internal.OSSOperation.send(OSSOperation.java:92) at com.aliyun.oss.internal.OSSOperation.doOperation(OSSOperation.java:140) at com.aliyun.oss.internal.OSSOperation.doOperation(OSSOperation.java:111) at com.aliyun.oss.internal.OSSBucketOperation.getBucketInfo(OSSBucketOperation.java:1152) at com.aliyun.oss.OSSClient.getBucketInfo(OSSClient.java:1220) at com.aliyun.oss.OSSClient.getBucketInfo(OSSClient.java:1214) at com.aliyun.oss.demo.HelloOSS.main(HelloOSS.java:94) Caused by: org.apache.http.conn.HttpHostConnectException: Connect to oss-test.oss-cn-hangzhou-internal.aliyuncs.com:80 [oss-test.oss-cn-hangzhou-internal.aliyuncs.com/10.84.135.99] failed: Connection timed out: connect at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at com.aliyun.oss.common.comm.DefaultServiceClient.sendRequestCore(DefaultServiceClient.java:113) ... 9 more
Solution
Use ossutil to troubleshoot issues.
What do I do if the "SignatureDoesNotMatch" error message is returned?
Cause 1
The AccessKey secret does not match the AccessKey ID.
For more information about how to obtain the AccessKey ID and AccessKey secret, see Obtain an AccessKey pair.
Cause 2
The signed URL is incorrectly used. The following sample code provides an example of how a signed URL is incorrectly used:
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, object); request.setExpiration( new Date(new Date().getTime() + 3600 * 1000)); request.addUserMetadata("author"); URL url = ossClient.generatePresignedUrl(request); Map<String, String> header = new HashMap<String, String>(); header.put("author"); ossClient.putObject(url, new ByteArrayInputStream("Hello OSS".getBytes()), -1, header);
If the Method parameter is not specified, the signed URL is generated to initiate a GET request. In the preceding example, the error is returned because the signed URL is used to initiate a PutObject request. In this case, you must set the Method parameter to PUT.
In addition, the user metadata headers in a PutObject request must start with the
x-oss-meta-
prefix. In the preceding example, the user metadata field must be changed tox-oss-meta-author
.Solution:
The following code provides an example on how to specify the Method parameter and modify the header in the request:
request.addUserMetadata("author"); request.setMethod(HttpMethod.PUT); URL url = ossClient.generatePresignedUrl(request); Map<String, String> header = new HashMap<String, String>(); header.put("x-oss-meta-" + "author"); ossClient.putObject(url, new ByteArrayInputStream("Hello OSS".getBytes()), -1, header);
Cause 3
The version of OSS SDK for Java is earlier than 3.7.0 and HttpClient 4.5.9 or later is used in your project.
The name of the uploaded object contains a plus sign (
+
). However, HttpClient 4.5.9 does not encode the plus sign (+
) by using URL encoding. As a result, this error is returned to indicate that the signatures on the client and the server do not match.
Solution:
Upgrade your OSS SDK for Java to 3.11.1 or later to ensure compatibility with HttpClient 4.5.9.
Remove the unnecessary dependency from HttpClient. The dependency of HttpClient is automatically imported when you import OSS SDK for Java. If HttpClient is imported by third-party libraries, see the solution in the JAR package conflicts section of this topic.
Cause 4
HttpClient 4.5.10 or later is imported to your project, and the request headers contain characters that are not supported by ISO/9959-1. For example, the headers whose names start with
x-oss-meta-
contain Chinese characters.Solution
Remove HttpClient 4.5.10 or later from your project. For more information, see the solution in the JAR package conflicts section of this topic.
Make sure that the characters contained in the request headers are supported by ISO/9959-1.
What do I do if the "Failed to parse the response result" error message is returned?
Cause
HTTP requests are intercepted by the software deployed on the client or hijacked by a router on the Internet.
Java 11 is installed but the dependencies on JAXB are not added to the pom.xml file.
Solution
Initiate requests by using HTTPS.
Add the dependencies on JAXB to the pom.xml file. For more information, see Installation.
org.apache.http.NoHttpResponseException: The target server failed to respond
Cause
A similar output is displayed when you run OSS SDK for Java:
The preceding error may occur if expired connections are used. This error occurs only if an OSS SDK for Java version earlier than 2.1.2 is used.
Solution
Upgrade OSS SDK for Java to 2.1.2 or later.
What do I do if JVM contains a large number of org.apache.http.impl.conn.PoolingHttpClientConnectionManager instances?
Cause
The OSSClient instances are not shut down.
Solution
Shut down the OSSClient instances that are executed or use the single instance mode.
What do I do if OSS SDK for Java stops responding?
Cause
OSS SDK for Java stops responding when OSS SDK for Java is called. Run the
jstack -l pid
command to view the stack. A similar output is displayed:"main" prio=6 tid=0x000000000291e000 nid=0xc40 waiting on condition [0x0000000002dae000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000007d85697f8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043) at org.apache.http.pool.PoolEntryFuture.await(PoolEntryFuture.java:138) at org.apache.http.pool.AbstractConnPool.getPoolEntryBlocking(AbstractConnPool.java:306) at org.apache.http.pool.AbstractConnPool.access$000(AbstractConnPool.java:64) at org.apache.http.pool.AbstractConnPool$2.getPoolEntry(AbstractConnPool.java:192) at org.apache.http.pool.AbstractConnPool$2.getPoolEntry(AbstractConnPool.java:185) at org.apache.http.pool.PoolEntryFuture.get(PoolEntryFuture.java:107) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.leaseConnection(PoolingHttpClientConnectionManager.java:276) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager$1.get(PoolingHttpClientConnectionManager.java:263) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:190) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at com.aliyun.oss.common.comm.DefaultServiceClient.sendRequestCore(DefaultServiceClient.java:113) at com.aliyun.oss.common.comm.ServiceClient.sendRequestImpl(ServiceClient.java:123) at com.aliyun.oss.common.comm.ServiceClient.sendRequest(ServiceClient.java:68) at com.aliyun.oss.internal.OSSOperation.send(OSSOperation.java:94) at com.aliyun.oss.internal.OSSOperation.doOperation(OSSOperation.java:146) at com.aliyun.oss.internal.OSSOperation.doOperation(OSSOperation.java:113) at com.aliyun.oss.internal.OSSObjectOperation.getObject(OSSObjectOperation.java:229) at com.aliyun.oss.OSSClient.getObject(OSSClient.java:629) at com.aliyun.oss.OSSClient.getObject(OSSClient.java:617) at samples.HelloOSS.main(HelloOSS.java:49)
The error is caused by connection leaks in the connection pool. These leaks occur if ossObject is not shut down after usage.
Solution
Check your program to ensure that no connection leaks occur. The following code provides an example on how to shut down ossObject:
// Read the object. OSSObject ossObject = ossClient.getObject(bucketName, objectName); // Perform operations on OSS. // Shut down the ossObject. ossObject.close();
Connection closure
Cause
A similar output is displayed when you use ossClient.getObject.
Exception in thread "main" org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body (expected: 11990526; received: 202880) at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:180) at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:200) at org.apache.http.impl.io.ContentLengthInputStream.close(ContentLengthInputStream.java:103) at org.apache.http.impl.execchain.ResponseEntityProxy.streamClosed(ResponseEntityProxy.java:128) at org.apache.http.conn.EofSensorInputStream.checkClose(EofSensorInputStream.java:228) at org.apache.http.conn.EofSensorInputStream.close(EofSensorInputStream.java:174) at java.io.FilterInputStream.close(FilterInputStream.java:181) at java.io.FilterInputStream.close(FilterInputStream.java:181) at com.aliyun.oss.event.ProgressInputStream.close(ProgressInputStream.java:147) at java.io.FilterInputStream.close(FilterInputStream.java:181) at samples.HelloOSS.main(HelloOSS.java:39)
The error occurs because the interval between the two data reading attempts exceeds 1 minute. OSS closes the connection if no data is sent or received for more than 1 minute.
Solution
If you read part of the data during unspecified time periods, we recommend that you use range download to prevent disconnection during data reading. When the range download task is complete, the connection is closed. For more information, see Range download.
Memory leaks
Cause
Memory leaks occur when OSS SDK for Java runs for an extended period of time. This period can range from a few hours to several days based on the amount of access traffic. We recommend that you use the Eclipse Memory Analyzer (MAT) to analyze memory usage. For more information, see IBM Developer.
If a similar analysis result is displayed, PoolingHttpClientConnectionManager consumes 96% of memory. The possible cause is that the new OSSClient command is run multiple times and ossClient.shutdown is not called. As a result, memory leaks occur.
Solution
Make sure that ossClient.shutdown is called after the new OSSClient command is run.
What do I do if the "InterruptedException" error occurs when ossClient.shutdown is called?
Cause
A similar error is displayed when ossClient.shutdown is called by using OSS SDK for Java earlier than V2.3.0:
java.lang.InterruptedException: sleep interrupted at java.lang.Thread.sleep(Native Method) at com.aliyun.oss.common.comm.IdleConnectionReaper.run(IdleConnectionReaper:76)
The error occurs because the backend thread (IdleConnectionReaper) of ossClient closes idle connections periodically. If ossClient.shutdown is called when IdleConnectionReaper is in Sleep mode, the preceding error occurs.
Solution
The following code provides an example on how to ignore this exception:
try { ossClient.shutdown(); } catch(Exception e) { }
What do I do if the "SDK.ServerUnreachable: Specified endpoint or uri is not valid" error message is returned?
Cause
Requests are sent from the client to Security Token Service (STS) with high concurrency.
Connections to the server time out.
STS SDK and the SDK core are not the latest versions.
Solution
When Elastic Compute Service (ECS) instances on the client or on-premises computer are unable to support bursts of requests, reduce the number of concurrent requests sent to STS.
If the connection to the server times out, check and analyze the captured packets.
We recommend that you upgrade STS SDK or the SDK core to the latest version.
NoSuchKey
Cause
The error message returned because the required object does not exist.
Solution
For information about how to resolve this issue, see HTTP status code 404.
SocketException
Cause
The error occurs because the socket failed to be specified during initialization. As a result, the request was not received by OSS.
Solution
We recommend that you troubleshoot the error from the following aspects:
Check whether jitters occur.
Check whether socket resources are exhausted by other processes.
Check the maximum number of connections configured in OSS SDK for Java. If the actual number of connections exceeds the connection limit, a socket exception occurs.
If the error persists, we recommend that you use tcpdump or Wireshark to capture packets, reproduce the error, and analyze the packets.
What do I do if the callback operation of OSS PostObject fails?
The callback operation of OSS PostObject fails but the callback operation of PutObject is succeedful. In most cases, if the JSON format is invalid or a callback fails, an error message is returned. In this case, you must test whether the callback operations of PUT and POST are triggered.
Cause
The callback parameter follows the file parameter when you send the request.
Solution
Change the position of the callback parameter.
The test results show that the server captures the request.
Connection pool shut down
Caused by: java.lang.IllegalStateException: Connection pool shut down
at org.apache.http.util.Asserts.check(Asserts.java:34)
at org.apache.http.pool.AbstractConnPool.lease(AbstractConnPool.java:184)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.requestConnection(PoolingHttpClientConnectionManager.java:251)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:175)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at com.aliyun.oss.common.comm.DefaultServiceClient.sendRequestCore(DefaultServiceClient.java:124)
at com.aliyun.oss.common.comm.ServiceClient.sendRequestImpl(ServiceClient.java:133)
... 8 more
Cause
After
ossClient.shutdown()
is called, requests are sent by using ossClient.Solution
Check the call logic. Make sure that no requests are sent by using ossClient after
ossClient.shutdown()
is called.
What do I do if the "Request has expired" error message is returned when the request is generated by using generatePresignedUrl of OSS SDK for Java?
Cause
An integer overflows, which results in the Year 2038 timestamp issue.
An upload request is initiated after the URL expires.
Solution
If the integer overflows, we recommend that you set the expiration time of the URL in OSS SDK for Java to a value earlier than the year 2038.
If an upload request is initiated after the URL expires, we recommend that you specify an expiration time that is later than the time when you initiated the request.
What do I do if the "Invalid Response" or "Implementation of JAXB-API has not been found on module path or classpath" error message is returned?
Cause
Java 9 or later is installed and the dependencies on JAXB are not added.
Solution
For more information about how to add the dependencies on JAXB, see Installation.
How do I enable or disable logging for OSS SDK for Java?
Apache Log4j specifies logs of different levels, including OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE, and ALL.
You can enable or disable logging for OSS SDK for Java by configuring the attributes of Log4j.
Does OSS SDK for Java provide thread safety?
Yes, OSS SDK for Java provides thread safety.
What do I do if the "AccessDenied Hierarchical namespace is disabled" error message is returned?
Cause
The hierarchical namespace feature is disabled before the CreateDirectory, Rename, or DeleteDirectory operation is called.
Solution
Enable the hierarchical namespace feature for a bucket when you create the bucket. For more information, see Create buckets.
What do I do if the "Connection reset" error message is returned when I access OSS over HTTP with stable client network?
Operators in specific regions may hijack OSS domain names. We recommend that you use endpoints to configure HTTPS. For more information, see Initialization.
What do I do if the "Java 17 Cannot invoke "java.lang.reflect.Method.invoke(Object, Object[])" because "com.sun.xml.bind.v2.runtime.reflect.opt.Injector.defineClass" is null" error message is returned?
Cause
JAXB is deprecated in Java 9 and removed in Java 11.
Solution
Add the following dependencies:
<dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>com.sun.xml.messaging.saaj</groupId> <artifactId>saaj-impl</artifactId> <version>1.5.1</version> </dependency>
Other errors
For more information about how to resolve other errors returned by OSS, see Overview.