What you need is just the OpenCV framework, and then you can use the Java wrapper for those framework libraries. I have already written an answer that talks about in-depths of OpenCV and Java language, so you should consider reading them first,
How can I count number of people in java opencv[
^]
That answer of mine also does talk about Face Recognition (detection, specifically) and you can also try the following code from here,
javacv/OpenCVFaceRecognizer.java at master · bytedeco/javacv · GitHub[
^], Or read the guide for Java wrapper for OpenCV:
Face Detection and Tracking — OpenCV Java Tutorials 1.0 documentation[
^]
Now for the part where you say, you cannot do the Haar training, actually what happens is that OpenCV actually does everything and you can then use the wrappers (such as EmguCV in C#, and others for Python and Java)... I wrote an article that shows how to do that in C#,
Facial biometric authentication on your connected devices[
^], you can use the same concepts and find the objects for Java...
Or Python, if you believe Python is better. :)