2024 Clojure 运行状况调查! 中分享您的想法。

欢迎!请参阅 关于 页面以获取更多有关此功能的详细信息。

+4
工具依赖项
重新标记

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"}}}'


会失败,报错如下


正在下载:com/twelvemonkeys/imageio/imageio-bmp/3.1.1/imageio-bmp-3.1.1.jar 来自中央仓库
正在下载: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启动器。安装脚本需要(prefix) Windows路径,然后它就顺利安装了。

我使用`clj`工具没有遇到问题,而是当运行`clojure -M:repl`时。

在下载过程中某个时刻,下载突然停止。等待很久后,我收到了上面的错误信息。

我的假设是,某处存在死锁。NTFS对文件锁定的要求比Linux强得多。我可能会在这里检查,包括线程...

上述解决方案解决这个问题对我来说。
(如果这很重要,我在Windows上通过Scoop安装了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的所有修改。
不太确定是否有帮助,但我今天在最新的 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] 下载中:从central下载org/bytedeco/mkl/2020.3-1.5.4/mkl-2020.3-1.5.4-linux-x86-redist.jar
[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库进行了部分升级,我认为这会有所帮助,但这是一个很大的变化。
...