2017-09-27 290 views
0

我有一个Gradle项目,它具有一些第三方依赖关系。向Gradle添加SQLServer依赖项后,jar无法找到Main类

我的jar一直工作正常,直到我添加SQLServer依赖项。

这里的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')已经被添加到依赖关系之后。我得到的错误:

Error: Could not find or load main class MainLauncher

什么可能是一个潜在的问题?谢谢!

+0

构建jar - 解压缩它('jar -xvf ')并验证META-INF/MANIFEST.MF文件 - 如果一切正常。这是一个手工创建jar文件的机会。另外还有一个Gradle的插件 - 经过很好的测试,并且能够正确地建立fat jar。为什么'MainLauncher'没有包名? – Opal

+0

谢谢你的回复,欧泊。有趣的是,只有一个特定的库崩溃了整个执行过程。除此之外,一切正常。我已经通过使用另一个开源解决方案解决了一个问题。没有包名称,因为MainLauncher文件位于'java'文件夹的根目录中。 – NickitaX

回答

0

我前段时间有同样的问题。我刚刚导入了该项目,并希望做一个简洁的构建。我有完全相同的错误。

我可以通过确保我至少有一次迁移来解决此问题。这可能听起来很愚蠢,但只是尝试为您的数据库创建1个迁移。

至少它解决了我的问题,我当然希望它也能解决你的问题!

1

今天我面临完全一样的问题,我达到了这个网页,获得分辨率

我跑罐子下面依赖

group: 'com.microsoft.sqlserver', name: 'mssql-jdbc', version: '6.2.2.jre8' 

和我面临完全一样的问题,

Error: Could not find or load main class

后来我改变了与旧版本的依赖关系,它在这个改变后运行良好

group: 'com.microsoft.sqlserver', name: 'mssql-jdbc', version: '6.2.1.jre7'

相关问题