2012-03-31 61 views
3

當我檢出https://github.com/alexeyr/scala-time並使用Maven構建一次時,一切正常。然後我觸摸src/main/scala/org/scala_tools/time/Implicits.scala來觸發重新編譯。再次運行mvn compile,我也得到類似Scala中的錯誤Maven重新編譯時無需更改代碼

[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 

56個錯誤,但是似乎沒有看到感動文件中定義,並與import org.scala_tools.time.Implicits._進口implicits。但同時我沒有錯誤object Implicits is not a member of package org.scala_tools.time,正如我期望在這種情況下看到的那樣。

mvn clean之後它可以被編譯一次而沒有錯誤再次。

  1. 有人能重現嗎?

  2. 如果是,我該如何解決?

UPDATE:這也恰好與SBT,但只有當Implicits.scala實際上改變足以產生不同的類文件(例如添加一行object Implicits2 extends Implicits)。而這組錯誤是不同的!

+0

我可以重新創建 - 'git clone https://github.com/alexeyr/scala-time.git; cd scala-time; mvn編譯;觸摸src/main/scala/org/scala_tools/time/Implicits.scala; mvn編譯'。 – rampion 2012-03-31 20:33:25

+0

Unsatisfying修復:'rm -rf target; mvn編譯' – rampion 2012-03-31 20:37:12

回答

1

我可以重新創建錯誤,而不maven,所以它看起來像這可能是同是如何被使用scalac的問題(或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 

(該sed命令只是解決了scalac-args.m2目錄)

哪裏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 

以及適當的罐子已經被下載。

如果我用參數替換target/classestarget/classes/org/scala_tools/time/,那麼它工作正常。

% 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 

所以它看起來像maven-scala-plugin預計給出的路徑上的目錄時scalac在封裝相應的子目錄的樣子,但scalac沒有這樣做。我不確定誰錯了。

+0

奇怪。我會問scala用戶郵件列表,並希望他們能提供幫助。問題是,如果這是一個可怕的bug,那麼爲什麼不是每個人都會遇到它? – 2012-04-01 18:11:58

+0

@AlexeyRomanov:我不知道 - 我剛開始使用'scala',所以我不是最好的來源。也許大多數人使用'sbt'而不是'maven'? – rampion 2012-04-01 19:11:14

+0

查看更新:問題也存在與'sbt'。只是避免重新編譯才更聰明。 – 2012-04-01 19:46:43

1

Unsatisfying fix:rm -rf target; MVN編譯 - 風鈴草10小時前

沒用的修復,因爲他可以做mvn clean compile - 這將是跨平臺解決方案:)