Java also requires the distribution of some Java packages and the setting of the CLASSPATH, so that the Java interpreter can locate them.
C++ applications are statically linked and consequently have less additional components required for redistribution.