The detection mechanism should try to create a selector before accepting a provider. Because it does not, XNIO may incorrectly try to use epoll (and fail) on Solaris, among other problems.
Also, add sun.nio.ch.DevPollSelectorProvider as an option for Solaris.