Embracing the host (the JVM and Java) provides tremendous leverage in tooling, performance, and reach but has the corresponding tradeoffs of leaking that host environment throughout various parts of the stack. This is just something to accept and manage - the compromise is made.
I personally do not think the error messages are "atrocious". Some error messages are confusing or lack context. There are many tickets in progress to improve those and they continue to get better over time. This is an area we continue to work on within the language.