Pregunta

Tengo problemas para compilar código que tiene una dependencia experto en jline-0.9.94. En concreto, estoy compilando Groovy 1.7.6 usando su objetivo Ant defecto y conseguir el error siguiente:

[...]
-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 dependencia jline se resuelve correctamente, pero extrañamente el método setDefaultPrompt no parece estar presente en el frasco:

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

(Otros métodos parecen faltaba a la salida javap también, pero setDefaultPrompt es el que romper mi construcción.)

He intentado aniquilar jline de mi repositorio de Maven local y de volver a intentarlo, pero sin éxito. También he comprobado el jarfile jline de Central de Maven , así como un espejo con los mismos resultados.

Curiosamente, puedo copiar el archivo jar a una máquina diferente (un sol) y realizar los mismos pasos y veo el método setDefaultPrompt en el archivo jar como se esperaba. Otros han realizado con éxito los mismos pasos en un Mac también.

¿Qué puede estar pasando en mi máquina que pueda impedir la cadena de herramientas de Java de ver los métodos contenidos en el archivo jar?

¿Fue útil?

Solución

Yo tenía el mismo problema en mi máquina (compilación de JRuby, en lugar de Groovy).

La solución a mi problema fue que descubrió un frasco jline antigua en /Library/Java/Extensions/jline-0_9_5.jar, así que nuked y lo reemplazó con una versión más moderna.

Otros consejos

Debe tener diferentes versiones del archivo JAR.

No es reproducible en mi Mac 10.5.8 con Java 1.5.0_13

Si extrae jline-0.9.94.jar y leer su META-INF/MANIFEST.MF entonces usted puede encontrar que este frasco fue compilado por 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

JRE es también compatible hacia atrás, pero la distancia entre su 1.6.0_22 y 1.4.2_16 es muy grande.

Por lo tanto, se lo supone que jline recompilación de código fuente .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top