Wenn Sie Class.forName(...)
nicht verwenden den Treiber manuell zu laden, dann haben Sie, glaube ich, ein berüchtigtes Problem mit maven-assembly-plugin
- Es überschreibt Dateien mit demselben Namen, wenn sie aus verschiedenen jar
stammen s.
In Ihrem Fall basiert der JDBC-Treibererkennungsmechanismus auf einer Datei mit dem Namen /META-INF/services/java.sql.Driver
, und Sie haben mindestens zwei jar
s eine solche Datei in Ihren Abhängigkeiten (Oracle- und Postgres-Treiber) enthalten, daher geht eine davon nach dem Ausführen von maven-assembly-plugin
verloren .
Sie können maven-shade-plugin
verwenden statt maven-assembly-plugin
um diese Dateien wie hier beschrieben korrekt zusammenzuführen.
Alternativ können Sie Class.forName(...)
verwenden um den fehlerhaften Autodiscovery-Mechanismus zu umgehen.