Je viens de donner IntelliJ a essayer, car Eclipse m'a encore énervé. J'ai importé mon gradle projet (jetée, vaadin) et tout s'est bien passé. Mais lorsque j'ai essayé de l'exécuter, j'ai rencontré le message d'erreur suivant lors de "make":
Erreur: gradle-resources-test: vaadinsharedwidgets: Java.lang.NoClassDefFoundError: org/Apache/tools/ant/util/ReaderInputStream
"vaadinsharedwidgets" est un module du projet. D'après ce que j'ai compris de l'erreur, IntelliJ ne trouve pas ant, mais c'est voulu parce que je n'utilise pas ant. Cela ne fait pas non plus partie des dépendances transitives. Le même projet s’exécute dans Eclipse Fine et le construit également en douceur, sans aucun problème.
Mise à jour: Je viens juste de vérifier Eclipse et ant.jar est sur le chemin de classe dans Eclipse mais je ne peux pas le lier à un projet. Je me demande comment ça s'est passé là-bas.
Update2: Informations de version manquantes:
build.gradle
:
apply from: 'http://nexus/gradle/vaadin.gradle'
apply from: 'http://nexus/gradle/Java8.gradle'
version = '1.1'
description = "Gemeinsame Vaadin-Widgets"
vaadin.widgetset 'net.xyz.vaadinsharedwidgets.VaadinsharedWidgetsWidgetset'
dependencies {
compile project(':ibhtheme')
compile 'com.vaadin:vaadin-server:' + vaadin.version
compile 'com.vaadin:vaadin-client:' + vaadin.version
}
jar{
// Include source in jar
from sourceSets.main.allJava
}
sourceSets.main.resources.srcDir 'src/main/webapp'
vaadin.gradle:
apply from: 'http://plugins.jasoft.fi/vaadin.plugin?version=0.9.2'
configurations {
def conf = 'vaadin-client'
def sources = project.sourceSets.main
def testSources = project.sourceSets.test
if (!project.configurations.hasProperty(conf)) {
project.configurations.create(conf)
sources.compileClasspath += project.configurations[conf]
testSources.compileClasspath += project.configurations[conf]
testSources.runtimeClasspath += project.configurations[conf]
project.configurations[conf].exclude group: 'org.Eclipse.jetty'
}
}
vaadin {
version '7.3.4'
Push true
}
Java8.gradle:
apply plugin: 'Java'
sourceCompatibility = 1.8
targetCompatibility = 1.8
group = 'net.xyz'
dependencies {
compile 'org.slf4j:slf4j-api:1.7.5'
compile 'com.google.guava:guava:16.0.1'
compile 'org.springframework:spring-context:4.0.3.RELEASE'
testCompile 'org.testng:testng:6.8.7'
testCompile 'org.mockito:mockito-all:1.9.5'
testCompile 'org.easytesting:fest-assert-core:2.0M10'
testCompile 'org.springframework:spring-test:4.0.3.RELEASE'
}
L'ajout de ant en tant que dépendance supplémentaire au module ne fonctionne pas.
Après quelques bricolages et tentatives d’essai et d’erreur, j’ai trouvé que le code suivant dans le fichier vaadin.gradle était le coupable et je l’ai supprimé:
configurations {
def conf = 'vaadin-client'
def sources = project.sourceSets.main
def testSources = project.sourceSets.test
if (!project.configurations.hasProperty(conf)) {
project.configurations.create(conf)
sources.compileClasspath += project.configurations[conf]
testSources.compileClasspath += project.configurations[conf]
testSources.runtimeClasspath += project.configurations[conf]
project.configurations[conf].exclude group: 'org.Eclipse.jetty'
}
}
Utiliser jetty9 au lieu de jetty8, qui était utilisé par les anciennes versions du plugin vaadin-gradle, faisait partie d’un hack obsolète. La version actuelle utilise la version 9.2.2, ce qui semble bien se passer.
J'ai rencontré la même erreur dans un projet Java avec plusieurs sous-projets dans IntelliJ 14.
La mise à jour vers 15.0.1, l'actualisation des projets Gradle via Views → Tool Windows → Gradle
dans IntelliJ et le redémarrage ont corrigé le problème.
Choisissez File → Invalidate Caches / Restart
dans le menu et sélectionnez Invalidate and Restart
. Cela a résolu le problème pour moi.