首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行sbt cmd时“没有锁可用”

运行sbt cmd时“没有锁可用”
EN

Stack Overflow用户
提问于 2013-07-16 20:19:10
回答 2查看 2.6K关注 0票数 5

为了构建spark项目,我尝试使用sbt。发生以下异常:

代码语言:javascript
复制
java.io.IOException: No locks available
    at sun.nio.ch.FileChannelImpl.lock0(Native Method)
    at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:871)
    at java.nio.channels.FileChannel.tryLock(FileChannel.java:962)
    at xsbt.boot.Locks$GlobalLock.withChannel$1(Locks.scala:88)
    at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withChannelRetries$1(Locks.scala:81)
    at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock$1.apply(Locks.scala:102)
    at xsbt.boot.Using$.withResource(Using.scala:11)
    at xsbt.boot.Using$.apply(Using.scala:10)
    at xsbt.boot.Locks$GlobalLock.ignoringDeadlockAvoided(Locks.scala:62)
    at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:52)
    at xsbt.boot.Locks$.apply0(Locks.scala:31)
    at xsbt.boot.Locks$.apply(Locks.scala:28)
    at xsbt.boot.Update.apply(Update.scala:100)
    at xsbt.boot.Launch.update(Launch.scala:279)
    at xsbt.boot.Launch.xsbt$boot$Launch$$retrieve$1(Launch.scala:149)
    at xsbt.boot.Launch$$anonfun$3.apply(Launch.scala:157)
    at scala.Option.getOrElse(Option.scala:120)
    at xsbt.boot.Launch.xsbt$boot$Launch$$getAppProvider0(Launch.scala:157)
    at xsbt.boot.Launch$$anon$2.call(Launch.scala:142)
    at xsbt.boot.Locks$GlobalLock.withChannel$1(Locks.scala:98)
    at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withChannelRetries$1(Locks.scala:81)
    at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock$1.apply(Locks.scala:102)
    at xsbt.boot.Using$.withResource(Using.scala:11)
    at xsbt.boot.Using$.apply(Using.scala:10)
    at xsbt.boot.Locks$GlobalLock.ignoringDeadlockAvoided(Locks.scala:62)
    at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:52)
    at xsbt.boot.Locks$.apply0(Locks.scala:31)
    at xsbt.boot.Locks$.apply(Locks.scala:28)
    at xsbt.boot.Launch.locked(Launch.scala:178)
    at xsbt.boot.Launch.app(Launch.scala:93)
    at xsbt.boot.Launch.app(Launch.scala:91)
    at xsbt.boot.Launch$.run(Launch.scala:51)
    at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:45)
    at xsbt.boot.Launch$.launch(Launch.scala:65)
    at xsbt.boot.Launch$.apply(Launch.scala:16)
    at xsbt.boot.Boot$.runImpl(Boot.scala:31)
    at xsbt.boot.Boot$.main(Boot.scala:20)
    at xsbt.boot.Boot.main(Boot.scala)
Error during sbt execution: java.io.IOException: No locks available

我尝试过的sbt版本: 0.11.3-2和0.13.0我也尝试更改了sbt引导目录,以避免权限问题。

任何我做错了的想法。

EN

回答 2

Stack Overflow用户

发布于 2015-01-14 00:38:11

默认情况下,sbt在启动或执行依赖关系解析时会尝试获取独占锁。这是为了避免缓存损坏或删除另一个进程正在使用的JAR文件(这可能会导致一些非常奇怪的错误)。

这种锁定通常与分布式文件系统不兼容。有时,它甚至会在具有意外实现的本地文件系统上失败。检查你的文件系统,看看Java是否支持锁定它。

您应该能够通过以下方式禁用此锁定:

代码语言:javascript
复制
sbt -Dsbt.boot.lock=false

此外,如果您有自己的sbt.boot.properties文件,则需要以下内容:

代码语言:javascript
复制
[boot]
lock: false

这将禁用启动器中的锁定功能,进而禁用所有使用此功能的sbt项目的锁定。AFAIK这意味着sbt中的一切,尽管一些插件可能直接使用JDK锁定API。

票数 1
EN

Stack Overflow用户

发布于 2014-02-23 15:30:01

我真的不知道出了什么问题,但我怀疑您的问题可能与this one类似。您是否在NFS挂载上使用项目和/或sbt副本和/或主目录进行构建?您是否尝试过完全从本地磁盘进行构建?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17676336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档