Frage

Ich habe Probleme beim Kompilieren von Code, der eine Maven Abhängigkeit von jline-0.9.94 hat. Insbesondere bin ich Kompilieren Groovy 1.7.6 mit sein Standard Ant-Ziel und immer folgende Fehlermeldung:

[...]
-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]               ^

Die jline Abhängigkeit richtig aufgelöst wird, aber seltsamerweise die setDefaultPrompt Methode scheint nicht in das Gefäß zu sein:

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

(Andere Methoden aus dem javap Ausgang als auch erscheinen fehlen, aber setDefaultPrompt ist derjenige meine Build brechen.)

Ich habe versucht jline von meinem lokalen Maven-Repository auszulöschen und versuchen, wieder ohne Erfolg. Ich habe überprüft auch die jline jarfile von Maven Zentral sowie ein Spiegel mit dem gleichen Ergebnis.

Merkwürdig ist, kann ich die JAR-Datei auf einen anderen Rechner kopiert (a Sun) und genau die gleichen Schritte ausführen, und ich sehe die setDefaultPrompt Methode in der JAR-Datei wie erwartet. Andere haben erfolgreich die gleichen Schritte auf einem Mac als auch durchgeführt wird.

Was auf meinem Rechner geschehen könnte, die den Java-Toolchain nicht sehen Methoden in der JAR-Datei enthaltenen verhindern?

War es hilfreich?

Lösung

Ich hatte das gleiche Problem auf meinem Rechner (Kompilieren JRuby, anstatt Groovy).

Die Lösung für mein Problem war, dass ich ein altes jline Glas bei /Library/Java/Extensions/jline-0_9_5.jar entdeckt, so dass ich es platt gemacht und ersetzen sie durch eine modernere Version.

Andere Tipps

Sie müssen verschiedene Versionen der JAR-Datei haben.

Nicht reproduzierbar auf meinem Mac 10.5.8 mit Java 1.5.0_13

Wenn Sie jline-0.9.94.jar extrahieren und lesen seine META-INF/MANIFEST.MF dann können Sie feststellen, dass dieses Glas von java kompiliert wurde 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 ist auch abwärtskompatibel, aber ein Abstand zwischen Ihrem 1.6.0_22 und 1.4.2_16 ist sehr groß.

ich dich so an, dass zu recompile jline von Quellcode .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top