2017-09-27 99 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'