Guys, I understand what you're saying about the user setting up java before running karaf, but that doesn't mean requiring java to be on the SYSTEM path before execution. For the service wrapper, that is exactly why you set the JAVA_HOME variable at the top of your wrapper.conf. And in fact, the karaf-service linux script makes sure JAVA_HOME is set as the first thing they do! You even corrected this as part of karaf issue
KARAF-2017, but then you're not using it to invoke java itself.
If you look at this <a href=http://wrapper.tanukisoftware.com/doc/english/props-envvars.html>Java Service Wrapper documentation page</a>, even they demonstrate that you should be invoking java on the wrapper.java.command property using the JAVA_HOME variable. What sense does it make to set JAVA_HOME in your conf file, reference it for additional java parameters, but yet not use it to invoke java itself and instead require java to be configured on the system path?
I apologize if I'm fundamentally missing something here, but this seems to be a big mistake to me. I'll reopen for additional discussion.