【发布时间】:2025-11-28 06:15:01
【问题描述】:
我有一个带有一些第三方依赖项的 Gradle 项目。
在我添加 SQLServer 依赖项之前,我的 jar 一直运行良好。
这是 build.gradle 的快照:
group 'MyApp'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'idea'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile 'com.amazonaws:aws-java-sdk:1.11.60'
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.6'
compile files('mylibraries/ojdbc7.jar')
compile files('mylibraries/postgresql-42.1.4.jar')
compile files('mylibraries/mssql-jdbc-6.2.1.jre8.jar')
}
jar {
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
}
manifest {
attributes 'Main-Class': 'MainLauncher'
}
}
compile files('mylibraries/mssql-jdbc-6.2.1.jre8.jar') 添加到依赖项后,一切都崩溃了。我得到的错误:
错误:无法找到或加载主类 MainLauncher
什么可能是潜在的问题?谢谢!
【问题讨论】:
-
构建 jar - 提取它 (
jar -xvf <some.jar>) 并验证META-INF/MANIFEST.MF文件 - 如果一切正常。手动创建胖罐子可能会搞砸一些事情。还有一个用于 gradle 的影子插件——它经过了很好的测试,可以正确构建 fat jar。为什么MainLauncher没有包名? -
感谢您的回复,欧泊。有趣的是,只有一个特定的库会导致整个执行崩溃。除此之外一切正常。我已经通过使用另一个开源解决方案解决了一个问题。没有包名,因为 MainLauncher 文件位于“java”文件夹的根目录中。
标签: java sql-server intellij-idea gradle gradlew