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

我已经无法重现这个问题,而且有一段时间没有收到其他人关于这个问题的报告,所以现在不会创建票据。

无论是在工作环境还是在高速网络上,我都无法重现。
我稍后会从家中,在慢速网络下再试一次。
我通过限制工作机的带宽可以重现该问题。

所以首先运行:

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 from central
正在下载:org/bytedeco/javacpp/1.5.7/javacpp-1.5.7-linux-arm64.jar from central
构建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
by
我可以复现这个问题

我使用的是Windows操作系统,底下是MSYS下的Posix启动器。安装脚本需要Windows路径的prefix,然后就能正常安装。

在使用`clj`工具时我没有遇到问题,但运行`clojure -M:repl`时却遇到了。

下载过程中某个地方突然停止下载。长时间等待后,我收到了上面的错误信息。

我的假设是可能存在死锁。NTFS在文件锁定方面比Linux更加挑剔。我可能会在那里看看线程...

上面描述的解决方案对我解决这个问题很有帮助。
by
(如果这有关的话,我在Windows上通过Scoop安装了temurin-19-jdk,并将其bin目录添加到了我的路径中。)
by
我刚刚注意到这个工单和那里的进展。谢谢你对这个问题的努力工作!
by
在删除".m2"之后,我在org Byrneco/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 来自 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' 的写入锁
    在 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
by
是的,我已经对一个新版本的Maven库进行了部分升级,我认为这会有所帮助,但这是一个很大的变化。
...