gradle 可执行 jar 不能包含本地 jar 依赖项
gradle executable jar can't include local jar dependencies
已解决
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")
);
(抱歉英语不好。)
我必须连接我的 oracle 数据库,所以我下载了 oracle jdbc 驱动程序并添加了我的依赖项。 当我在 intellij 运行 时连接良好, 所以我用 gradle.
构建了可执行 jar 文件
但是,它无法连接到我的 oracle 数据库。我认为它是在没有oracle jdbc驱动程序文件的情况下构建的,因为它是一个本地jar文件。
如何使用所有依赖项进行构建?
如果您需要有关我的项目的更多信息来解决此问题,请告诉我。
谢谢 :D
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')
}
命令
{directory}> java -jar ./{jarFileName}.jar
错误信息
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")
);
文件树
- {root directory}
- lib
- ojdbc6.jar
- src
- main
- java
- App.java
- WaitingDatabase.java
- build.gradle
已添加
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}
已解决
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")
);
(抱歉英语不好。)
我必须连接我的 oracle 数据库,所以我下载了 oracle jdbc 驱动程序并添加了我的依赖项。 当我在 intellij 运行 时连接良好, 所以我用 gradle.
构建了可执行 jar 文件但是,它无法连接到我的 oracle 数据库。我认为它是在没有oracle jdbc驱动程序文件的情况下构建的,因为它是一个本地jar文件。
如何使用所有依赖项进行构建?
如果您需要有关我的项目的更多信息来解决此问题,请告诉我。
谢谢 :D
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')
}
命令
{directory}> java -jar ./{jarFileName}.jar
错误信息
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")
);
文件树
- {root directory}
- lib
- ojdbc6.jar
- src
- main
- java
- App.java
- WaitingDatabase.java
- build.gradle
已添加
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}