linkedin / parseq

Asynchronous Java made easier
Apache License 2.0
1.17k stars 266 forks source link

parseq-lambda-names does not work with Java 11 #285

Closed jessejie7 closed 4 years ago

jessejie7 commented 4 years ago

parseq-lambda-names does not work properly with Java11 as lambdas are no longer passed to the ClassFileTransformer. Here is a more indepth explanation: https://stackoverflow.com/a/33912156.

Here is also a discussion among openjdk devs: http://mail.openjdk.java.net/pipermail/core-libs-dev/2016-January/038316.html

This was not supposed to work in JDK 8 either but it seems that Parseq found a hack for it by checking for this: https://github.com/linkedin/parseq/blob/24f7a90e0f9bcb15cb53123dfaeac2a7aad1a84b/subprojects/parseq-lambda-names/src/main/java/com/linkedin/parseq/lambda/ASMBasedTaskDescriptor.java#L107

This no longer works in Java 11 as no lambda classes are passed through this ClassFileTransformer (I checked all the class names in the parseq-lambda-names:test).

junchuanwang commented 4 years ago

The implementation changed to use defineAnonymousClass to intercept lambda function for JDK 8+ versions.

Have tested that the newly released 5.1.0 implementation work with Java 11.

I also think in the future there seems to be better way to solve this problem: https://bugs.openjdk.java.net/browse/JDK-8205939

But will close this issue now