USB itself is very much involved with the hardware and OS, so it's not suitable for support in generic
Java, although OS's that make the USB look like generic serial devices can be used with Java by programming for serial Java I/O. Or in some cases, network I/O.
On the other hand, if you want lower-level USB support (such as hardware identification and specific USB protocols), you'll probably have to go with a JNI library specific for the OS and hardware you want to work with.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.