2012-03-31 5 views
3

Wenn ich https://github.com/alexeyr/scala-time auschecke und es einmal mit Maven baue, funktioniert alles gut. Dann berühre ich src/main/scala/org/scala_tools/time/Implicits.scala, um eine Neukompilierung auszulösen. Führen Sie mvn compile wieder, und ich bekomme 56 Fehler ähnlich wieFehler in Scala Maven Rekompilierung ohne Codeänderung

[ERROR] F:\MyProgramming\scala-time\src\main\scala\org\scala_tools\time\StaticDateTime.scala:29: error: value second is not a member of Int 
[ERROR] def nextSecond = now + 1.second 

Es scheint nicht die implicits in der berührten Datei und importiert mit import org.scala_tools.time.Implicits._ definiert, um zu sehen. Aber zur gleichen Zeit gibt es keinen Fehler object Implicits is not a member of package org.scala_tools.time, wie ich in diesem Fall erwarten würde.

Nach mvn clean kann es einmal ohne Fehler erneut kompiliert werden.

  1. Kann jemand das reproduzieren?

  2. Wenn ja, wie kann ich es beheben?

UPDATE: es kommt auch mit SBT, aber nur, wenn Implicits.scala geändert werden tatsächlich genug, um verschiedene Klassendateien (zum Beispiel eine Zeile object Implicits2 extends Implicits) zu erzeugen. Und die Menge der Fehler ist anders!

+0

Ich kann neu erstellen - 'Git Clone https://github.com/alexeyr/scala-time.git; CD-Scala-Zeit; mvn kompilieren; Tippen Sie auf src/main/scala/org/scala_tools/time/Implicits.scala; mvn kompilieren. – rampion

+0

Unbefriedigende Lösung: 'rm -rf target; mvn compile' – rampion

Antwort

1

ich ohne maven die Fehler neu erstellen kann, so sieht es aus wie das sein könnte ein Problem mit wie scalac verwendet wird (oder ein Fehler mit scalac):

% rm -rf target 
% mkdir -p target/classes 
% cat scalac-args | sed "s;~;$HOME;g" | xargs scalac-2.9 # runs successfully 
% cat scalac-args | sed "s;~;$HOME;g" | xargs scalac-2.9 
#... 
56 errors found 

(der sed Befehl löst nur das .m2 Verzeichnis in scalac-args

)

Wo scalac-args

-target:jvm-1.5 
-classpath 
~/.m2/repository/org/scala-lang/scala-library/2.9.1-1/scala-library-2.9.1-1.jar:~/.m2/repository/org/joda/joda-convert/1.2/joda-convert-1.2.jar:~/.m2/repository/joda-time/joda-time/2.1/joda-time-2.1.jar:target/classes 
-d 
target/classes 
src/main/scala/org/scala_tools/time/DurationBuilder.scala 
src/main/scala/org/scala_tools/time/Implicits.scala 
src/main/scala/org/scala_tools/time/Imports.scala 
src/main/scala/org/scala_tools/time/RichAbstractDateTime.scala 
src/main/scala/org/scala_tools/time/RichAbstractInstant.scala 
src/main/scala/org/scala_tools/time/RichAbstractPartial.scala 
src/main/scala/org/scala_tools/time/RichAbstractReadableInstantFieldProperty.scala 
src/main/scala/org/scala_tools/time/RichChronology.scala 
src/main/scala/org/scala_tools/time/RichDate.scala 
src/main/scala/org/scala_tools/time/RichDateMidnight.scala 
src/main/scala/org/scala_tools/time/RichDateTime.scala 
src/main/scala/org/scala_tools/time/RichDateTimeFormatter.scala 
src/main/scala/org/scala_tools/time/RichDateTimeProperty.scala 
src/main/scala/org/scala_tools/time/RichDateTimeZone.scala 
src/main/scala/org/scala_tools/time/RichDuration.scala 
src/main/scala/org/scala_tools/time/RichInstant.scala 
src/main/scala/org/scala_tools/time/RichInt.scala 
src/main/scala/org/scala_tools/time/RichLocalDate.scala 
src/main/scala/org/scala_tools/time/RichLocalDateProperty.scala 
src/main/scala/org/scala_tools/time/RichLocalDateTime.scala 
src/main/scala/org/scala_tools/time/RichLocalDateTimeProperty.scala 
src/main/scala/org/scala_tools/time/RichLocalTime.scala 
src/main/scala/org/scala_tools/time/RichLocalTimeProperty.scala 
src/main/scala/org/scala_tools/time/RichLong.scala 
src/main/scala/org/scala_tools/time/RichMonthDay.scala 
src/main/scala/org/scala_tools/time/RichMonthDayProperty.scala 
src/main/scala/org/scala_tools/time/RichPartial.scala 
src/main/scala/org/scala_tools/time/RichPartialProperty.scala 
src/main/scala/org/scala_tools/time/RichPeriod.scala 
src/main/scala/org/scala_tools/time/RichReadableDateTime.scala 
src/main/scala/org/scala_tools/time/RichReadableDuration.scala 
src/main/scala/org/scala_tools/time/RichReadableInstant.scala 
src/main/scala/org/scala_tools/time/RichReadableInterval.scala 
src/main/scala/org/scala_tools/time/RichReadablePartial.scala 
src/main/scala/org/scala_tools/time/RichReadablePeriod.scala 
src/main/scala/org/scala_tools/time/RichYearMonth.scala 
src/main/scala/org/scala_tools/time/RichYearMonthProperty.scala 
src/main/scala/org/scala_tools/time/StaticDateTime.scala 
src/main/scala/org/scala_tools/time/StaticDateTimeFormat.scala 
src/main/scala/org/scala_tools/time/StaticDateTimeZone.scala 
src/main/scala/org/scala_tools/time/StaticDuration.scala 
src/main/scala/org/scala_tools/time/StaticInterval.scala 
src/main/scala/org/scala_tools/time/StaticLocalDate.scala 
src/main/scala/org/scala_tools/time/StaticLocalDateTime.scala 
src/main/scala/org/scala_tools/time/StaticLocalTime.scala 
src/main/scala/org/scala_tools/time/StaticPartial.scala 
src/main/scala/org/scala_tools/time/StaticPeriod.scala 

ist und die richtigen Gläser bereits heruntergeladen wurden.

Wenn ich target/classes durch target/classes/org/scala_tools/time/ in der -classpath Argument ersetzen, dann funktioniert es dann gut.

% rm -rf target 
% mkdir -p target/classes 
% cat scalac-args | sed "s;~;$HOME;g" | xargs scalac-2.9 # runs successfully 
% cat scalac-args | sed "s;~;$HOME;g" | xargs scalac-2.9 # runs successfully 

So sieht es aus wie die maven-scala-pluginscalac erwartet in Paket-entsprechenden Unterordner suchen, wenn Sie ein Verzeichnis auf dem Weg gegeben, aber scalac ist nicht das zu tun. Ich bin mir nicht sicher, wer falsch liegt.

+0

Seltsam. Ich werde auf der Mailingliste von scala-users fragen und hoffe, dass sie helfen können. Die Sache ist, wenn dies ein Scalac-Käfer ist, warum nicht jeder hineinläuft? –

+0

@AlexeyRomanov: Ich weiß es nicht - ich habe gerade angefangen mit 'Scala', also bin ich nicht die beste Quelle. Vielleicht benutzen die meisten Leute 'sbt' anstelle von' maven'? – rampion

+0

Siehe das Update: Das Problem existiert auch mit 'sbt'. Es ist nur schlauer, die Neukompilierung zu vermeiden. –

1

Unbefriedigende Lösung: rm -rf target; mvn kompilieren - rampion vor 9 Stunden

Useless fix, weil er mvn clean compile tun kann - und dies wird plattformübergreifende Lösung :)