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


将报错


从中央服务器下载: 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' 的写锁
        at org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(N
by
谢谢,我认为我们再次看到这个问题的原因了,有一些事情需要检查
0
by
我可以复现这个问题

我在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 位服务器虚拟机 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' 的写锁
    在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
by
是的,我已经部分完成升级到一组新的 Maven 库,我认为这将有所帮助,但这是一个很大的变化。
...