Кажется, что у вас есть jar
без зависимостей, поэтому ваши классы оракулов ojdbc
не включены в окончательный jar
. То, что вы хотите иметь, это "толстый кувшин" .
Способ сделать это - добавить плагин maven, который будет упаковывать все зависимости в приложении jar
. Этого можно достичь с помощью maven-assembly-plugin
:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<!-- get all project dependencies -->
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<!-- MainClass in mainfest make a executable jar -->
<archive>
<manifest>
<mainClass>function.example.App</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
Таким образом, если вы запустите mvn package
, у вас будет jar-with-dependencies
артефакт, который будет содержать все зависимости.
Обновление
Ваше приложение не может обнаружить класс драйвера во время выполнения, поэтому вам также необходимо загрузить его вручную. Обычно это выглядит примерно так:
Class<?> clazz = Class.forName("oracle.jdbc.driver.OracleDriver");
Driver driver = (Driver) clazz.newInstance();
DriverManager.registerDriver(driver);