Question

Je vais avoir du mal à la compilation du code qui a une dépendance Maven sur JLine-0.9.94. Plus précisément, je compiler Groovy 1.7.6 utilisant sa valeur par défaut cible Ant et obtenir l'erreur suivante:

[...]
-banner:
     [echo] Java Runtime Environment version: 1.6.0_22
     [echo] Java Runtime Environment vendor: Apple Inc.
     [echo] Ant version: Apache Ant version 1.7.1 compiled on June 27 2008
     [echo] Operating system name: Mac OS X
     [echo] Operating system architecture: x86_64
     [echo] Operating system version: 10.6.6
     [echo] Base directory: /Users/ldhanson2/tmp/groovy-1.7.6
     [echo] Java Home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
[...]
-stagedcompile-groovy:
  [groovyc] Compiling 166 source files to /Users/ldhanson2/tmp/groovy-1.7.6/target/classes
  [groovyc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
  [groovyc] Compile error during compilation with javac.
  [groovyc] /Users/ldhanson2/tmp/groovy-1.7.6/src/main/groovy/ui/InteractiveShell.java:222: cannot find symbol
  [groovyc] symbol  : method setDefaultPrompt(java.lang.String)
  [groovyc] location: class jline.ConsoleReader
  [groovyc]         reader.setDefaultPrompt("groovy> ");
  [groovyc]               ^

La dépendance de JLine est résolu correctement, mais étrangement la méthode setDefaultPrompt ne semble pas être présent dans le pot:

$ javap -classpath target/lib/compile/jline-0.9.94.jar jline.ConsoleReader | grep setDefaultPrompt
$ 

(D'autres méthodes semblent manque à la sortie de javap aussi, mais setDefaultPrompt est celui briser mon build.)

Je l'ai essayé effaçant JLine de mon repository local et d'essayer à nouveau, en vain. J'ai aussi vérifié le jarfile JLine de Maven Central ainsi qu'un miroir avec les mêmes résultats.

Bizarrement, je peux copier le fichier jar à une autre machine (un Sun) et effectuer exactement les mêmes étapes et je vois la méthode setDefaultPrompt dans le fichier jar comme prévu. D'autres ont réalisé avec succès les mêmes étapes sur un Mac ainsi.

Qu'est-ce qui pourrait se passer sur ma machine qui empêcherait Java toolchain de voir les méthodes contenues dans le fichier jar?

Était-ce utile?

La solution

J'ai eu le même problème sur ma machine (compilation JRuby, plutôt que Groovy).

La solution à mon problème était que je découvre un ancien pot de JLine à /Library/Java/Extensions/jline-0_9_5.jar, donc je NuKed et remplacé par une version plus moderne.

Autres conseils

Vous devez avoir différentes versions du fichier JAR.

Non reproductible sur mon Mac 10.5.8 avec java 1.5.0_13

Si vous extrayez jline-0.9.94.jar et lire son META-INF/MANIFEST.MF alors vous pouvez constater que ce pot a été compilé par Java 1.4.2_16:

 Manifest-Version: 1.0
 Archiver-Version: Plexus Archiver
 Created-By: Apache Maven
 Built-By: jason
 Build-Jdk: 1.4.2_16

est bien JRE rétrocompatible, mais une distance entre votre 1.6.0_22 et 1.4.2_16 est très grand.

Alors, je suppose que vous à JLine recompilation de code source .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top