SOLVED
WaitingDatabase.connect(WaitingDatabase.java:17)
// added this line Class.forName("oracle.jdbc.driver.OracleDriver"); connection = DriverManager.getConnection( DatabaseProperties.properties.getProperty("waiting_url_oracle"), DatabaseProperties.properties.getProperty("waiting_user_oracle"), DatabaseProperties.properties.getProperty("waiting_password_oracle") );
(Sorry for bad english.)
I have to connect my oracle database, so I downloaded oracle jdbc driver and added in my dependencies. It connected well when I run at intellij, so I built executable jar file with gradle.
However, it couldn’t connect to my oracle database. I think it was built without oracle jdbc driver file, because it is a local jar file.
How can I build with all of my dependencies?
If you need more information about my project to solve this problem, please let me know.
Thank you 😀
build.gradle
jar { manifest { attributes 'Main-Class': 'App' } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } } dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' // https://mvnrepository.com/artifact/mysql/mysql-connector-java compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.20' // https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client compile group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.6.0' // https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1' // oracle 11g jdbc driver compile files('lib/ojdbc6.jar') }
cmd
{directory}> java -jar ./{jarFileName}.jar
error message
java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@{address}:{port}:{sid} at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at WaitingDatabase.connect(WaitingDatabase.java:17) at App.connectDatabase(App.java:22) at App.main(App.java:5)
WaitingDatabase.connect(WaitingDatabase.java:17)
connection = DriverManager.getConnection( DatabaseProperties.properties.getProperty("waiting_url_oracle"), DatabaseProperties.properties.getProperty("waiting_user_oracle"), DatabaseProperties.properties.getProperty("waiting_password_oracle") );
file tree
- {root directory} - lib - ojdbc6.jar - src - main - java - App.java - WaitingDatabase.java - build.gradle
ADDED
db.properties
sleep-millisecond=1000 waiting_db=oracle waiting_url_oracle=jdbc:oracle:thin:@{address}:{port}:{sid} waiting_user_oracle={username} waiting_password_oracle={password} waiting_url_mariadb=jdbc:mariadb://{address}:{port} waiting_user_mariadb={username} waiting_password_mariadb={password}
Advertisement
Answer
What you did is correct:
compile files('lib/ojdbc6.jar')
This will also work:
dependencies { implementation fileTree(dir: 'lib', include: '*.jar')
The advantage of this is that it will include all the jars in the lib directory without you having to do it manually.
ojdbc6.jar is meant for JDK 6, as stated here. If you are using > JDK 6, you might want to consider upgrading your ojdbc6.jar and most importantly you might want to check this.
Cheers