gpt4 book ai didi

scala - 由于修改了二进制依赖项 rt.jar,Sbt 总是完全重建

转载 作者:行者123 更新时间:2023-12-04 15:35:20 24 4
gpt4 key购买 nike

由于修改了二进制依赖项,Sbt 总是完全重建:rt.jar:

[debug] 
[debug] Initial source changes:
[debug] removed:Set()
[debug] added: Set()
[debug] modified: Set()
[debug] Removed products: Set()
[debug] Modified external sources: Set()
[debug] Modified binary dependencies: Set(C:\Program Files\Java\jdk1.6.0_37\jre\lib\rt.jar)
[debug] Initial directly invalidated sources: Set()

很明显,rt.jar 没有改变,它的创建/访问/修改日期是相同的并且很旧。

它在 c:\Program Files\Java\jdk1.6.0_37\jre\lib\

JAVA_HOME 设置为 C:\Progra~1\Java\jdk1.6.0_37

JAVA_HOME/bin 在 PATH 中。

任何想法为什么 sbt 认为 rt.jar 已更改?

最佳答案

我将 JAVA_HOME 设置为 C:\Progra~1\Java\jdk1.6.0_37 并且 sbt 将依赖解析为 C:\Program Files\Java\jdk1.6.0_37\jre\lib\rt.jar。 Sbt 使用 java.io.File.equals() 在这种情况下是不正确的:

在 sbt/compile/inc/Incremental.scala 中:

def externalBinaryModified(entry: String => Option[File], analysis: File => Option[Analysis], previous: Stamps, current: ReadStamps)(implicit equivS: Equiv[Stamp]): File => Boolean =
dependsOn =>
analysis(dependsOn).isEmpty &&
orTrue(
for {
name <- previous.className(dependsOn)
_ = println("Name: " + name)
e <- entry(name)
_ = println("entry: " + e)
} yield {
val resolved = Locate.resolve(e, name)
println("resolved: " + resolved)
println("dependsOn: " + dependsOn)
println("resolved != dependsOn: " + (resolved != dependsOn))
(resolved != dependsOn) || !equivS.equiv(previous.binary(dependsOn), current.binary(resolved))
}
)

给出以下输出:
Name: java.lang.Object
entry: c:\Progra~1\Java\jdk1.6.0_37\jre\lib\rt.jar
resolved: c:\Progra~1\Java\jdk1.6.0_37\jre\lib\rt.jar
dependsOn: c:\Program Files\Java\jdk1.6.0_37\jre\lib\rt.jar
resolved != dependsOn: true

因此,sbt 总是认为 rt.jar 被更改了。

解决方法是将 JAVA_HOME 设置为“c:\Program Files\Java\jdk1.6.0_37”
解决方案是这样做:
resolved.getCanonicalPath != dependsOn.getCanonicalPath

关于scala - 由于修改了二进制依赖项 rt.jar,Sbt 总是完全重建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12972183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com