C++ has a runtime library. It may or may not be linked statically to your program, so you might be reliant on more of a runtime than you think.
In general, avoiding runtimes is probably the least reasonable excuse for using C++ IMHO, because the good ones are either trivial to install or ubiquitous already anyways.
You are overestimating what the usual computer user can or cannot do.
If you expect the latest Java RTE to be available, well don't expect many to be able run your software without any problems. Problems you might have to fix which can cost a company money, technical support doesn't come free.
Besides there are also thoose that can install runtime X but aren't motivated. For example I do rarely install any Java related updates, there is just no software that I do use regulary which requires it.
And whenever there is Java software that I would like to use I think twice, because there is probably some smaller tool that doesn't expect me to perform more than a copy&paste setup, so basically no reason for me to waste my time with it.
In C++ you can either add the runtime too your executable or don't link to it at all. So if you want something really small or really simple too install (copy&paste) it's probably one of the best choices.