Add support for java9+
See original GitHub issueexpected behavior
As a cf-java-client user
- in order to leverage java9+ language features
- I need cf-java-client to be compatible with java9+ LTS version, such as java11
observed behavior
- cf-java-client seems only tested in its ci against java8 https://github.com/cloudfoundry/cf-java-client/blob/a83ea56d7adacac42f99a3b60ad98b84e03c14c1/ci/unit-test.yml#L4-L8
- cf-java-client running with java14 fails with the following stack trace, with root cause https://github.com/jwtk/jjwt/issues/333#issuecomment-409754833 fixed in 0.10.0 while cf-java-client still uses 0.9.1
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT 2020-09-07 17:39:30.078 WARN 19 --- [-client-epoll-1] i.n.c.AbstractChannelHandlerContext : An exception 'java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter' [enable DEBUG level for full stacktrace] was thrown by a user handler's exceptionCaught() method while handling the following exception:
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.jsonwebtoken.impl.Base64Codec.decode(Base64Codec.java:26) ~[jjwt-0.9.1.jar:0.9.1]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.jsonwebtoken.impl.Base64UrlCodec.decode(Base64UrlCodec.java:78) ~[jjwt-0.9.1.jar:0.9.1]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.jsonwebtoken.impl.AbstractTextCodec.decodeToString(AbstractTextCodec.java:36) ~[jjwt-0.9.1.jar:0.9.1]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:251) ~[jjwt-0.9.1.jar:0.9.1]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:481) ~[jjwt-0.9.1.jar:0.9.1]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.jsonwebtoken.impl.DefaultJwtParser.parseClaimsJwt(DefaultJwtParser.java:514) ~[jjwt-0.9.1.jar:0.9.1]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at org.cloudfoundry.reactor.tokenprovider.AbstractUaaTokenProvider.parseToken(AbstractUaaTokenProvider.java:154) ~[cloudfoundry-client-reactor-4.9.0.RELEASE.jar:na]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at org.cloudfoundry.reactor.tokenprovider.AbstractUaaTokenProvider.lambda$null$3(AbstractUaaTokenProvider.java:196) ~[cloudfoundry-client-reactor-4.9.0.RELEASE.jar:na]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at java.base/java.util.Optional.ifPresent(Unknown Source) ~[na:na]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at org.cloudfoundry.reactor.tokenprovider.AbstractUaaTokenProvider.lambda$extractRefreshToken$4(AbstractUaaTokenProvider.java:192) ~[cloudfoundry-client-reactor-4.9.0.RELEASE.jar:na]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:177) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:114) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:114) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:112) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onNext(FluxMap.java:213) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onNext(FluxDoFinally.java:123) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:178) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.core.publisher.FluxContextStart$ContextStartSubscriber.onNext(FluxContextStart.java:96) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1782) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.core.publisher.MonoCollectList$MonoCollectListSubscriber.onComplete(MonoCollectList.java:121) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:252) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:136) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:138) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:136) ~[reactor-core-3.3.9.RELEASE.jar:3.3.9.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:378) ~[reactor-netty-0.9.11.RELEASE.jar:0.9.11.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:373) ~[reactor-netty-0.9.11.RELEASE.jar:0.9.11.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:429) ~[reactor-netty-0.9.11.RELEASE.jar:0.9.11.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:645) ~[reactor-netty-0.9.11.RELEASE.jar:0.9.11.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:96) ~[reactor-netty-0.9.11.RELEASE.jar:0.9.11.RELEASE]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[netty-codec-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) ~[netty-codec-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) ~[netty-codec-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.handler.logging.LoggingHandler.channelRead(LoggingHandler.java:271) ~[netty-handler-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1526) ~[netty-handler-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1275) ~[netty-handler-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1322) ~[netty-handler-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:501) ~[netty-codec-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:440) ~[netty-codec-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) ~[netty-codec-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792) ~[netty-transport-native-epoll-4.1.51.Final-linux-x86_64.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475) ~[netty-transport-native-epoll-4.1.51.Final-linux-x86_64.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) ~[netty-transport-native-epoll-4.1.51.Final-linux-x86_64.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.51.Final.jar:4.1.51.Final]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at java.base/java.net.URLClassLoader.findClass(Unknown Source) ~[na:na]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ~[na:na]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:135) ~[app/:na]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ~[na:na]
2020-09-07T19:39:30.07+0200 [APP/PROC/WEB/1] OUT ... 67 common frames omitted
Issue Analytics
- State:
- Created 3 years ago
- Comments:8 (8 by maintainers)
Top Results From Across the Web
Oracle JDK 9 and JRE 9 Certified System Configurations
This is the complete list of JDK 9 supported configurations. There are no plans to add additional configurations. On 64-bit operating systems (OSs)...
Read more >JDK 9 and the Java Plugin
JRE 9 will continue to provide the Java Plugin and support launching applets on browsers that still offer standard plugin support, but is...
Read more >Add Java 9 Support | Jira Server and Data Center
This issue suggests that JAVA 9 be added as a supported JAVA version. Example Use Case: As a JIRA admin I need to...
Read more >New Features in Java 9 - Baeldung
New Features in Java 9 · 1. Overview · 2. Modular System – Jigsaw Project · 3. A New HTTP Client · 4....
Read more >Java 9 Features with Examples - DigitalOcean
In Java SE 9, Oracle Corp is going to improve CompletableFuture API to solve some problems raised in Java SE 8. They are...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
It’s something we intend to do. Right now we’re somewhat resource constrained for this, but work has begun on overhauling our infrastructure and that should make this possible. No timeline yet, but probably by the end of the year. And in the meantime I’ll check if there’s something straightforward we can do with the current setup.
Note that jjwt has split into multiple artifacts whose latest version is 0.11.2 see https://github.com/jwtk/jjwt#maven