I have had a maddeningly frustrating time trying to deploy a webapp recently, which makes for a jarring (no pun intended) experience. This boils down to the fact that Java 12 has removed core libraries required by the (long derelict) http-lite library, which in turn is used by my deployment packaging
immutant. The result has been compilation failures. Debugging was made all the worse by the expensively-made discovery that both of my computers, which are running Tumbleweed SUSE rolling distribution, can still find the necessary package for a java env variable:
export JAVA_TOOL_OPTIONS="--add-modules=java.xml.bind". However, it took a lot of time to realize that the java packages on our Ubuntu server do not seem to have that module anywhere, so the command failed.
Finally, as we were juggling java versions, I faced the conundrum that my user on the server could compile the program, but no one else – including both root, and me -> sudo: root -> su: me – could compile. This turned out to be because somehow my user had a particular lein installed which had bound to the java 8 executable, and everyone else was failing with the system java 12.
So, in conclusion, I am very grateful for the effort made by Cognitect to safeguard compatibility and stability, and the fact that their commitment apparently exceeds that of Oracle and the main Java complex. I sympathize with anyone who has to bump into such fundamental compatibility limits.
Old issue (and proposed solution) on httplite, sadly unmaintained: https://github.com/hiredman/clj-http-lite/issues/17