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

我无法重现这个问题,而且有一段时间没有人报告过相关问题,所以现在不会创建工单。

 альтернатив изображения
无论是在工作环境中还是在快速网络环境下,我都无法重现该问题。
稍后我会从家里尝试,使用较慢的线路。
 альтернатив изображения
通过限制工作机器的带宽,我能够重现该问题。

首先运行

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
 альтернатив изображения
感谢,我认为我已经明白为什么我们会再次遇到这个问题,并有一些事情需要检查
0
 альтернатив изображения
我可以重现这个问题

我使用的是Windows操作系统,并在MSYS下使用Posix启动程序。安装脚本需要前缀中的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'的写锁
在 org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(NamedLockFactoryAdapter.java:165)
在 org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:233)
在 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-Bit Server 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 from 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”

与此同时,我已经升级了我的互联网连接为光纤,但问题仍然存在...
因此,我最初认为该问题在“慢网络”上发生的假设是不正确的。
问题仍然存在于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] 错误构建classpath。无法获取'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'的写锁
在 org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(NamedLockFactoryAdapter.java:165)
[2024-09-09T21:19:22.032Z]
在 org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:233)
在 org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:212)
    at o
是的,我正在部分升级到一组新的Maven库,我认为这会有帮助,但这是一个很大的变化。
...