请在2024 Clojure状态调查!中分享您的想法。

欢迎!有关如何使用本网站的信息,请参阅关于页面

+4
tools.deps
重新标记

depes.edn

{:deps {org.deeplearning4j/deeplearning4j-nlp {:mvn/version "1.0.0-M2.1"}}}

这个错误在较旧的Clojure版本中曾经发生,但后来消失了,见这里

https://clojurians-log.clojureverse.org/tools-deps/2021-09-16

现在我在使用最新的clojure CLI时再次遇到了这个问题。
1.11.1.1200

解决方案仍然是限制下载线程的数量;

clj -Sthreads 1

所以这只会在我使用(默认)多线程下载时发生。

2 个答案

+2

我无法复现这个问题,并且已经有一段时间没有收到其他人在这个问题上的报告,所以现在不考虑创建工单。

by
我在快速网络环境下也无法重现此问题。
我会稍后从家里以慢速网络再次尝试。
by
通过限制我的工作机的带宽,我可以重现这个问题。

首先运行

sudo wondershaper -a eth0 -d 1024 -u 1024

将下载带宽限制为 1MBit/s

然后从最新的 Clojure Docker 镜像启动 clj

docker run -ti clojure clj -Sdeps '{:deps {org.deeplearning4j/deeplearning4j-nlp {:mvn/version "1.0.0-M2.1"}}}'


失败


从 central 下载: com/twelvemonkeys/imageio/imageio-bmp/3.1.1/imageio-bmp-3.1.1.jar
从 central 下载: org/bytedeco/javacpp/1.5.7/javacpp-1.5.7-linux-arm64.jar
构建类路径出错。无法获取 'artifact:org.bytedeco:leptonica:1.82.0-1.5.7' 的写锁
java.lang.IllegalStateException: 无法获取 'artifact:org.bytedeco:leptonica:1.82.0-1.5.7' 的写锁
        在 org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(N
by
谢谢,我认为我理解了为什么我们会再次看到这个问题,也有一些事情要查看。
0
by
我能复现这个问题

我在Windows上,使用MSYS中的Posix启动器。安装脚本需要前缀中的Windows路径,然后它就可以正常安装。

我没有在`clj`工具上遇到问题,而是在运行`clojure -M:repl`时出现问题。

在下载过程中某个时候,下载突然停止。经过一段很长时间的等待,我得到了上面的错误消息。

我的假设是存在某个死锁。NTFS比Linux对文件锁的检查要严格得多。我可能会查看这里以及线程...

上述的解决方案解决了我的问题。
(如果这个有用的话,我用Scoop在Windows上安装了temurin-19-jdk,并将其bin目录添加到我的路径中。)
哎,我刚刚注意到这个工单以及那里的进展。谢谢你在这个问题上所做的努力!
在我删除了".m2"之后,我在org/bytedeco/mkl/2020.3-1.5.4/mkl-2020.3-1.5.4-linux-x86-redist.jar上再次遇到了这个问题(这个文件很大)
并且确实“clj -Sthreads 1”解决了这个问题。
你好,

我也在MBP M1上100%地复现了这个问题。

```
构建类路径出错。无法获取对'artifact:org.apache:apache:25'的写锁。
java.lang.IllegalStateException: 无法获取对'artifact:org.apache:apache:25'的写锁
    at org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(NamedLockFactoryAdapter.java:165)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:233)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:212)
...
...
```

```
❯ clj --version
Clojure CLI版本1.11.1.1413
```

```
❯ java --version
openjdk 20.0.2 2023-07-18
OpenJDK运行时环境Temurin-20.0.2+9 (构建20.0.2+9)
OpenJDK 64位服务器VM Temurin-20.0.2+9 (构建20.0.2+9, 混合模式)
```
我已经更改了所有依赖项,包括Maven解析器中与锁定相关的一些更新,很想知道你们在这些情况下有没有任何差异。此版本尚未作为稳定版本发布,但如果你在Mac上,可以使用`brew uninstall clojure`然后`brew install clojure/tools/[email protected]`来获取预发布CLI。当然,请删除-Sthreads 1的所有mod。

编辑
不清楚这是否有帮助,但我在最新的Clojure中再次遇到了这个问题。
```
2:46:25 错误 下载:org/bytedeco/mkl/2020.3-1.5.4/mkl-2020.3-1.5.4-linux-x86_64-redist.jar 来自 central
12:46:26 错误 构建类路径出错。无法获取对'artifact:org.bytedeco:mkl:2020.3-1.5.4'的写锁
12:46:26 错误 java.lang.IllegalStateException: 无法获取对'artifact:org.bytedeco:mkl:2020.3-1.5.4'的写锁
....
```
使用 1.11.3.1456

它位于 Docker 构建中,所以我确保它在每次创建容器时都能复现。
常用的修复方法是:"-Sthreads 1"。

在此期间,我已经将我的互联网连接升级为光纤,但问题仍然存在...
所以我之前关于“慢速网络”导致问题的假设是错误的。
by
问题在 Clojure 1.12 上仍然存在。
有时如此,和以前一样。

[2024-09-09T21:19:21.048Z] 正在下载:org/bytedeco/mkl/2020.3-1.5.4/mkl-2020.3-1.5.4-linux-x86-redist.jar 来自 central
[2024-09-09T21:19:22.032Z] 构建类路径出错。无法对 'artifact:org.bytedeco:mkl:2020.3-1.5.4' 获取写锁
[2024-09-09T21:19:22.032Z] java.lang.IllegalStateException: 无法对 'artifact:org.bytedeco:mkl:2020.3-1.5.4' 获取写锁
    at org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(NamedLockFactoryAdapter.java:165)
[2024-09-09T21:19:22.032Z]
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:233)
    at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:212)
    at o
by
是的,我正在将 Maven 库升级为一个新的集合,我认为这将有所帮助,但这是一个很大的改动。
...