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 从中央仓库
构建classpath时出错。无法获取对 'artifact:org.bytedeco:leptonica:1.82.0-1.5.7' 的写入锁
java.lang.IllegalStateException: 无法获取对 'artifact:org.bytedeco:leptonica:1.82.0-1.5.7' 的写入锁
        at org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(N
谢谢,我认为我明白为什么我们再次看到了这个问题,并且有一些事情需要查看。
0 投票
我能复现这个问题

我在Windows上使用MSYS下的Posix启动器。安装脚本需要prefix中的Windows路径,然后安装就正常了。

在使用 `clj` 工具时没有问题,而是在运行 `clojure -M:repl` 时出现问题。

下载过程中,在某一点上,下载突然停止。  经过长时间等待,我收到了上面的错误信息。

我的假设是某处存在死锁。  相对于Linux系统,NTFS在文件锁定方面更为挑剔。  我可能需要查阅那里以及线程...

上述的解决方案为我解决了这个问题。
by
(如果这很重要,我在Windows上通过Scoop安装了temurin-19-jdk,并将其bin目录添加到我的路径中。)
by
Ahhh-我刚刚注意到工单及其进展。  感谢你为此做出的工作!
by
补充一下,在删除”.m2”后,我在org/bytedeco/mkl/2020.3-1.5.4/mkl-2020.3-1.5.4-linux-x86-redist.jar(这是一个大文件)上再次遇到了它。
确实,“clj -Sthreads 1”解决了它。
by
你好,

我也加入一点,在我的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 位服务器虚拟机 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 错误:从 central 下载 org/bytedeco/mkl/2020.3-1.5.4/mkl-2020.3-1.5.4-linux-x86_64-redist.jar
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] 构建类路径时出错。无法为 '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)
    在 o
是的,我已经完成了对新集 Maven 库的部分升级,我认为这会有帮助,但是这是一个大变动。
...