This is a dirty decision. But you could ...
Create a project / module in which you define a set of service interfaces that your dropwizard will use to communicate with HBase.
Create another module / project that implements these interfaces and uses the HBase classes. The shadow of this project.
There is only an interface can in the Dropwizard project, but create a task to copy the shaded artifact to your resources.
Create a JARClassLoader for your shaded HBase client artifact. You may need to create a special subclass that does not pass to the parent object, because by default the class loader will ask the parent to allow the connection and may infer a newer version of guava from the external class loader.
Ask for a copy of the service contract from the Jar loader ...
Businessing api = Class.forName("com.awesome.Businessing", true, jarLoader).newInstance();
source share