As somebody who has been professionally developing in Java for 24 years I have spent a lot of time trying to understand continued success of Java.
Personally, I think Java is very poor language. I wish I could program in something like Common Lisp or even Clojure. And yet every single corporate Clojure project I have seen was a total disaster.
I think what happens is for new developers, Java does not come as just language. It comes with a huge ecosystem including books, Stack Exchange/Overflow posts, frameworks, certifications, etc. All of this gives developers a basic template for how an application should look like.
And, paradoxically, all of this is aided by Java which is a poor, repetitive language.
When I open a new Java project, I can easily identify all of the parts. Enough of the structure is a simple copy and paste of another project, that whatever is different must still follow certain rules.
Project that do not follow this blueprint tend to be flops and huge maintenance problem.
So why is that? I think most developer underestimate that structuring an application is a skill in itself. When given a preexisting structure to fill in with functionality, they are following good, established structural patterns that are instantly recognizable and understandable by the community of Java developers. This makes it easy for new people to not get completely lost in even a large application.
When the same Java developers decide to make something in Clojure, they are now responsible for structuring their application without any clear guidelines or established patterns on how to do it. And for some reason they tend to not understand is that their existing experience has not taught them what to do in this situation.