web-dev-qa-db-fra.com

maven compilation failure

J'ai un problème étrange - Certains fichiers de classe ne pouvaient pas être lus pendant la construction de Maven.

  1. J'ai un projet A et un projet B.
  2. Le projet B dépend du fichier JAR cible du projet A.

Lors de la compilation du projet B, il est impossible de lire lib dans le fichier JAR du projet A - bien que la partie qui lui est destinée soit parfaite.

J'ai également vérifié et vérifié le script Maven et il est parfait.

Erreur:

[INFO] Compiling 137 source files to V:\dhs_tss_build_view\dhs_tssproject\tss\tsscommon-server\target\classes
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure

V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/Java/us/mn/state/dhs/tss/common/oblix/da/wsdl/OblixLoginAc
cess.Java:[51,60] cannot find symbol
symbol  : class BusinessException
location: class us.mn.state.dhs.tss.common.oblix.da.wsdl.OblixLoginAccess

V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/Java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[187,14] cannot find symbol
symbol  : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl

V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/Java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[204,14] cannot find symbol
symbol  : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl


[INFO] ------------------------------------------------------------------------
[DEBUG] Trace
org.Apache.maven.BuildFailureException: Compilation failure
        at org.Apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.Java:579)
        at org.Apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.Java:499)
        at org.Apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.Java:478)
        at org.Apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.Java:330
)
        at org.Apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.Java:291)
        at org.Apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.Java:142)
        at org.Apache.maven.DefaultMaven.doExecute(DefaultMaven.Java:336)
        at org.Apache.maven.DefaultMaven.execute(DefaultMaven.Java:129)
        at org.Apache.maven.cli.MavenCli.main(MavenCli.Java:287)
        at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:39)
        at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:25)
        at Java.lang.reflect.Method.invoke(Method.Java:585)
        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.Java:315)
        at org.codehaus.classworlds.Launcher.launch(Launcher.Java:255)
        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.Java:430)
        at org.codehaus.classworlds.Launcher.main(Launcher.Java:375)
Caused by: org.Apache.maven.plugin.CompilationFailureException: Compilation failure
        at org.Apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.Java:516)
        at org.Apache.maven.plugin.CompilerMojo.execute(CompilerMojo.Java:114)
        at org.Apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.Java:451)
        at org.Apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.Java:558)
        ... 16 more
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 minute 56 seconds
[INFO] Finished at: Mon Oct 19 09:46:53 CDT 2009
[INFO] Final Memory: 11M/20M
[INFO] ------------------------------------------------------------------------
24
dagg

J'ai eu le même problème et voici comment je vous suggère de le résoudre:

Courir:

mvn dependency:list

et lisez attentivement si des messages d’avertissement indiquent que, pour certaines dépendances, il n’y aura pas de dépendances transitives disponibles.

Si oui, relancez-le avec l'indicateur -X:

mvn dependency:list -X

pour voir des informations détaillées de quoi se plaint Maven (il pourrait y avoir beaucoup de sorties pour le drapeau -X)

Dans mon cas, il y avait un problème dans le module maven dépendant, pom.xml - avec dépendance gérée. Bien qu'il existe une version pour la dépendance gérée définie dans pom parent, Maven n'a pas pu la résoudre et s'est plaint de la version manquante dans le fichier pom.xml dépendant

Donc, je viens de configurer la version manquante et le problème a disparu.

10
Michal Moravcik

Essayez d'utiliser:

mvn clean package install

Cette commande devrait installer vos artefacts dans votre dépôt Maven local.

PS: Je vois qu’il s’agit d’une question ancienne, mais elle pourrait être utile à l’avenir.

7
mulya

Cela pourrait être dû à une mémoire insuffisante.

Cela semble étrange, mais essayez, ça pourrait marcher:

export MAVEN_OPTS='-Xms384M -Xmx512M -XX:MaxPermSize=256M'

Source: https://groups.google.com/group/neo4j/msg/e208be9ee1c101d7 )

4
Hendy Irawan

Vous pouvez essayer d'exécuter la commande "site mvn" et voir quelles dépendances transitives vous avez, puis résoudre les conflits potentiels (en supprimant une dépendance implicite quelque part). Juste une supposition (il est un peu difficile de savoir ce que le problème pourrait être sans voir votre info pom) ...

2
davek

j'ai une erreur comme celle-ci, mais après

1/

 mvn Eclipse:clean
    mvn Eclipse:eclipse -Dwtpversion=2.0

2 / Lancez Eclipse et ouvrez le projet

3 /

mvn package

c'est du travail

2
nizar ouerghi

J'ai eu un problème similaire et je n'ai jamais rien trouvé sur le Web après une recherche excessive.

J'ai examiné le fichier pom.xml et, dans les dépendances, j'ai modifié l'étendue du <dependency> il: <scope>test</scope> en <scope>compile</scope>.

Auparavant, je ne l'utilisais que pour des tests mais je changeais la structure du projet et je ne savais jamais que je devais changer cela. 

test: Cette portée indique que la dépendance n'est pas requise pour utilisation normale de l'application, et est uniquement disponible pour le test phases de compilation et d'exécution.

compile: Il s'agit de la portée par défaut, utilisée si aucune n'est spécifiée. Compiler les dépendances sont disponibles dans tous les chemins de classes d'un projet . De plus, ces dépendances sont propagées aux projets dépendants.

Voici une référence de Apache Maven Docs: https://maven.Apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

2
spac3hit

C'est aussi important l'ordre des dépendances. J'ai eu le même problème. Et fondamentalement, je devais mettre d'abord les dépendances scope test, puis scope compile dans le pom.xml. Si je mets d'abord le scope compile puis le scope test, il échouera. 

1
Cosmin Popescu

L'erreur est assez claire: "ne trouve pas le symbole". Certaines dépendances ne peuvent pas être résolues (vous avez même la ligne et la colonne dans la trace de la référence qui ne peuvent pas être résolues):

V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/Java/us/mn/state/dhs/tss/common/oblix/da/wsdl/OblixLoginAc
cess.Java:[51,60] cannot find symbol
symbol  : class BusinessException
location: class us.mn.state.dhs.tss.common.oblix.da.wsdl.OblixLoginAccess

V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/Java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[187,14] cannot find symbol
symbol  : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl

V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/Java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[204,14] cannot find symbol
symbol  : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl

Ci-dessous quelques points à vérifier:

  • Vérifier ou revérifier que ces classes sont dans le jar A (même version que dans le pom)
  • Vérifiez ou revérifiez l'instruction d'importation dans les sources B (doit correspondre au paquet de classes dans A)
  • Vérifiez ou revérifiez le pom.xml de B et surtout la déclaration de la dépendance à A (sa version)
  • Vérifier que la dépendance à A n'est pas exclue transitoirement quelque part dans le pom de B.
  • Est-ce qu'une dépendance SNAPSHOT? Si non, supprimez A de votre référentiel local et reconstruisez

Maven fonctionne bien, vous avez une erreur quelque part.

1
Pascal Thivent

J'ai eu le même problème...

Comment réparer - ajoutez les propriétés suivantes au pom.xml

<properties>
    <!--  compiler settings -->
    <maven.compiler.source>1.6</maven.compiler.source>
    <maven.compiler.target>1.6</maven.compiler.target>
</properties>        
1
nikmul

Mon hypothèse est une mauvaise version du projet A jar dans votre référentiel Maven local. Il semble que la dépendance soit résolue, sinon je pense que maven ne commence pas à compiler, mais généralement ces erreurs de compilation signifient que vous avez une confusion de version. essayez de créer un maven clean install de votre projet A et voyez si cela change quelque chose pour le projet B ... De plus, un peu plus d'informations sur vos paramètres pourraient être utiles:

  • Comment Maven est-il lancé? quelle commande? sur un shell, un IDE (utilisant un plugin ou non), sur un serveur de CI? 
  • Quelle commande maven utilisez-vous?
1
florent

allez dans le dépôt maven et ouvrez le fichier jar [conseil: vous pouvez utiliser winzip] du module source pour vérifier la classe spécifique présente.

Dans mon cas ce n'est pas. Puis j'ai trouvé ci-dessous.

si vous utilisez le plugin org.Apache.felix/maven-bundle-plugin

Assurez-vous que le module source a un package d'exportation défini

exemple: com.xxx.camel.dao

1
PRAVEEN BARAMA

Il est facile d'obtenir cette erreur dans un projet multi-module. Si, par exemple, vous apportez des modifications aux modules A, B et C, mais tentez ensuite de ne compiler que le module B, vous risquez cette erreur. Supposons que le module B dépende du module A. Etant donné que seul le module B a été compilé, les fichiers de classe du module A sont maintenant obsolètes et éventuellement invalides.

La compilation de tous les modules (ou des modules dans le bon ordre de dépendance hiérarchique) résout cette erreur, si telle est la nature de votre problème.

A l'intérieur de votre classe sur laquelle vous vous plaignez, maven est une dépendance qui appartient à un jar essayez ces jars reconstruits avec la commande maven, j'utilise cette commande mvn clean install -DskipTests=true devrait fonctionner dans ce cas où certains symboles de classes sont manquants

0
ViliDuarte1

Après avoir exécuté la commande suivante: -mvn clean package install

J'ai trouvé le problème:
'dependencies.dependency.scope' for org.springframework.boot:spring-boot-starter-data-rest:pom must be one of [provided, compile, runtime, test, system] but is 'import'. @ line 13, column 11

L'une des dépendances était marquée comme "importation". Changer le «champ d'application» a résolu le problème pour moi.

0
Vibha

Si vos dépendances sont bien (vérifiez avec mvn dependency: list) comme les miennes, alors c'est un problème minable, Si vous utilisez Eclipse, faites:

  1. Faites un clic droit sur le projet> Maven> Mettre à jour le projet ...
  2. Vérifier tout sauf hors ligne
  3. D'accord

Tu devrais être bon.

Je ne connais pas les commandes mvn équivalentes, si quelqu'un pouvait les poster, elles pourraient être utiles.

0
Gandacarola

J'avais le même problème (même si le projet compilait/fonctionnait bien sous Eclipse), ce n'était pas le cas lorsque vous utilisiez la ligne de commande build . La raison était que je n'utilisais pas la structure de dossier correcte pour mvn: "src/main/Java/com "etc. Il regarde ces dossiers par défaut (j’utilisais"/scr/main/com "etc. ce qui posait problème).

0
Pelpotronic