Xilinx / RapidWright

Build Customized FPGA Implementations for Vivado
http://www.rapidwright.io
Other
284 stars 109 forks source link

Java 9 Compliance (Illegal reflective access warnings) #4

Closed clavin-xlnx closed 4 years ago

clavin-xlnx commented 6 years ago

Turns out RapidWright is relying on packages that are not fully Java 9 compliant and are using APIs that are deprecated and will no longer be usable in future releases. One example of the packages causing the issues:

WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by jnr.posix.JavaLibCHelper (file:/proj/xsjhdstaff2/clavin/workspace/RapidWright/jars/jython-standalone-2.7.0.jar) to method sun.nio.ch.SelChImpl.getFD() WARNING: Please consider reporting this to the maintainers of jnr.posix.JavaLibCHelper 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

clavin-xlnx commented 6 years ago

Looks like this one might hang around for a while. Jython has been trying to purge these exceptions but there is one use case that has proven difficult: http://bugs.jython.org/issue2656.

HarrisonMc555 commented 5 years ago

I similarly get an "illegal reflective access" error when running several RapidWright programs (I think all the ones I've tried so far), but from a different source.

$ java com.xilinx.rapidwright.device.browser.DeviceBrowser
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.caucho.hessian.io.Hessian2Input (file:/.../RapidWright/RapidWright/jars/hessian-4.0.6.jar) to field java.lang.Throwable.detailMessage
WARNING: Please consider reporting this to the maintainers of com.caucho.hessian.io.Hessian2Input
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

It appears every time I run code, including those intended to be run from the command line (e.g. SLRCrosserGenerator, although I know that's just an example). This can clutter the output of these tools and be fairly distracting.

The previous comment was from Jython, but this one is Hessian, so I figured I would list it here for the sake of completeness. Is there a way we can avoid the illegal access or to silence those warnings?

clavin-xlnx commented 5 years ago

Thanks for pointing this out, these messages are quite unfortunate. The Hessian sourced warnings are an issue in the current release, but I have completely removed the Hessian library usage in 2018.3 and replaced them with equivalent Kryo calls so it will no longer be an issue.

It looks like Jython recently closed the issues I cited above, so I will look into incorporating a newer version of Jython in a future release.

clavin-xlnx commented 5 years ago

I have removed any use of the Hessian library in 2018.3.0, and it is removed from the rapidwright_jars.zip in 2018.3.1.

It seems that Kryo still trips this message and it can't be turned off without a JVM flag (see this bug). I may have to modify their library to avoid the pesky messages in Java 9, 10, 11.

Jython seems to have resolved the issue as well, but they have yet to make a release that includes the fix. I may custom build their current working set if it takes too long.

clavin-xlnx commented 4 years ago

This issue should be resolved in the latest release (2019.2.2).