Gradle comstackJava ne peut pas trouver le symbole du fichier source

Je suis nouveau chez Gradle, alors il y a une chance que je manque quelque chose d’évident ici. Je travaille sur l’utilisation de Gradle pour la construction automatisée de nos projets. J’ai abordé la plupart d’entre eux, mais l’un d’eux me cause des problèmes sans fin. Comme cela concerne ma société, je ne peux partager aucun code réel, mais je ferai de mon mieux pour fournir un pseudo-code réaliste.

J’essaie de comstackr une application Web avec un back-end flexible et un back-end java. Pour le moment, je me concentre uniquement sur la création d’un fichier .war avec le fichier java, puis je passe à la compilation flex. Lorsque j’exécute le script build.gradle suivant, il me donne d’innombrables erreurs “impossible de trouver le symbole”.

apply plugin: 'eclipse' apply plugin: 'war' sourceCompatibility = 1.6 repositories { mavenCentral() } sourceSets.main.java.srcDir 'src' sourceSets.main.resources.srcDir 'src' webAppDirName = "WebContent" war.archiveName "Gradle_test.war" dependencies { comstack fileTree(dir: 'WebContent/WEB-INF/lib', include: '*.jar') providedComstack 'org.apache.tomcat:catalina:6.0.13' providedComstack 'org.apache.tomcat:dbcp:6.0.13' } 

Un exemple des erreurs qui se produisaient (avec de faux noms de paquets et de classes):

 /Users/user/Documents/eclipse/ProjectName/src/com/companyName/teamName/projectName/core/release/subProjectName/projectVersion/RenamedObject.java:385: cannot find symbol symbol : class OtherObject location: class com.companyName.teamName.projectName.core.release.subProjectName.projectVersion.RenamedObject public class InnerClass extends OtherObject implements Indexable, Serializable { 

La classe InnerClass est déclarée dans le fichier RenamedObject.java avec la classe RenamedObject. Le symbole qu’il ne peut pas trouver, OtherObject, ne provient pas d’un fichier .jar. Il s’agit d’un fichier source stocké dans / /Users/user/Documents/eclipse/ProjectName/src/com/companyName/teamName/projectName/core/release/subProjectName/projectVersion/superTypes/OtherObject.java du projet/ /Users/user/Documents/eclipse/ProjectName/src/com/companyName/teamName/projectName/core/release/subProjectName/projectVersion/superTypes/OtherObject.java . L’object est importé en haut de RenamedObject.java et peut être construit et exécuté correctement via eclipse sans parameters spéciaux. Ces erreurs se produisent pendant la tâche: comstackJava après l’exécution de gradle war partir du terminal.

Existe-t-il une raison pour que Gradle aurait un problème avec la gestion des importations source à partir d’un sous-package comme celui-ci? Est-ce que je fais juste quelque chose de mal? Faites-moi savoir s’il y a plus d’informations qui peuvent aider et je les fournirai si je peux.

EDIT: Je l’ai fait au travail. Les 130 erreurs ont toutes été résolues avec un changement Si j’ajoute le nom de package complet à OtherObject dans le prolongement, il se présente comme suit:

 public class InnerClass extends com.companyName.teamName.projectName.core.release.subProjectName.projectVersion.superTypes.OtherObject implements Indexable, Serializable { 

Ce changement a tout fait fonctionner, mais je ne comprends toujours pas la raison. Ce n’est pas la seule référence à OtherObject dans le projet et ce n’est pas le seul endroit où une classe interne étend une classe définie dans un autre package source.

Symptômes

Impossible d’exécuter la construction à l’aide de la dissortingbution Gradle ‘ https://services.gradle.org/dissortingbutions/gradle-2.8-bin.zip

… ….. …..

Causée par: org.gradle.api.internal.tasks.comstack.CompilationFailedException: la compilation a échoué; voir la sortie d’erreur du compilateur pour plus de détails.

Les rapports de construction Gradle que vous devez vérifier la sortie Java du compilateur.

Vérifiez la sortie et voyez quel nom de classe il cite dans la sortie qu’il est incapable de résoudre.

 symbol: class  

Solution

Indiquez le nom de domaine complet lorsque vous référencez la classe mentionnée comme symbole non résolu.

Dans mon cas, j'ai vu cela lorsque j'ai défini une classe intérieure qui étend une classe dans une bibliothèque que j'avais déclarée comme dépendance dans mon build.gradle.

PS:

J'ai vu que la solution à ce problème avait déjà été mentionnée en tant que commentaire à la question du PO.

Je ne pouvais pas trouver cette question car elle ne possédait pas les bons mots clés pour Google et aucune solution acceptée ne réduisait encore plus sa visibilité.

Le résultat de ceci est une journée perdue, plusieurs mèches de cheveux arrachées avant que je réalise cette stupide solution hackish 🙁 🙁

J'ai essayé tout ce qui est lié au soleil et qui est lié à la résolution de dépendance pour résoudre ce "problème de dépendance" qui n'a jamais été un problème avec ma base de code.

J'espère que l'équipe de Gradle résoudra ce problème dès que possible avant que davantage de personnes ne se côtelent.

Btw ... J'aime Gradle. 🙂

J’ajoute simplement à la base de connaissances, mais j’avais le même type de problème avec:

 public static class GetNetworkInterfacesCallable implements java.util.concurrent.Callable> { public GetNetworkInterfacesCallable(Ssortingng networkPrefix) { this.networkPrefix=networkPrefix; } @Override public Set call() throws Exception { Thread.currentThread().setName(getClass().getName()); return null; //myInetAddresses(networkPrefix); } final Ssortingng networkPrefix; } 

Utiliser les grades 2.9 et 2.10.