2017-09-27 5 views
0

J'ai un projet Gradle avec des dépendances de tiers.Après avoir ajouté la dépendance SQLServer à Gradle, jar ne peut pas trouver de classe principale

Mon pot a fonctionné correctement jusqu'à ce que j'aie ajouté la dépendance de SQLServer.

Voici un aperçu de 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' 
    } 
} 

Tout tombe en panne après compile files('mylibraries/mssql-jdbc-6.2.1.jre8.jar') a été ajouté aux dépendances. L'erreur est survenue:

Error: Could not find or load main class MainLauncher

Ce qui pourrait être un problème potentiel? Je vous remercie!

+0

Construire le fichier jar - l'extraire ('jar -xvf ') et vérifier le fichier 'META-INF/MANIFEST.MF' - si tout va bien. C'est une chance que la création manuelle d'un gros pot salit quelque chose. De plus, il y a un plugin d'ombre pour gradle - qui est bien testé et qui va construire un gros pot correctement. Pourquoi 'MainLauncher' est-il sans nom de paquet? – Opal

+0

Merci pour votre réponse, opale. Chose amusante, juste une bibliothèque particulière plante l'exécution entière. En dehors de tout cela fonctionne bien. J'ai déjà résolu un problème en utilisant une autre solution open-source. Il n'y a pas de nom de paquet parce que le fichier MainLauncher est situé dans la racine du dossier 'java'. – NickitaX

Répondre

0

J'ai eu le même problème il y a quelque temps. Je viens d'importer le projet et je voulais faire une construction propre gradle. J'ai eu exactement la même erreur.

Je pourrais résoudre ceci en m'assurant juste que j'avais au moins une migration. Cela peut sembler stupide mais essayez simplement de créer une migration pour votre base de données. Au moins, il a résolu mon problème et j'espère qu'il résout le vôtre aussi!

1

Aujourd'hui je faisais face à exactement la même question et je suis arrivé à cette page pour obtenir la résolution

je pot en cours d'exécution avec ci-dessous dépendance

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

et je faisais face à exactement la même question,

Error: Could not find or load main class

plus tard j'ai changé la dépendance avec l'ancienne version et il fonctionne bien après cette modification

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