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 来自central
正在下载:org/bytedeco/javacpp/1.5.7/javacpp-1.5.7-linux-arm64.jar 来自central
构建类路径错误。无法获取'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启动程序。 安装脚本需要在prefix中指定Windows路径,然后就可以正常运行了。

我没有“clj”工具的问题,而是在运行“clojure -M:repl”时出现问题。

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

我的假设是存在某个死锁。 NTFS比Linux对文件锁定的限制更多。 我可能会在这里以及线程里查找问题...

上面提到的解决方案已经为我解决了这个问题。
by
(我在Windows上通过Scoop安装了temurin-19-jdk,并将其bin目录添加到我的路径中,如果这很重要的话。)
by
哦——我刚注意到工单及其进展。 感谢你为此所做的努力!
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-Bit 服务器 VM Temurin-20.0.2+9 (构建 20.0.2+9, 混合模式)
```
by
我已经升级了所有依赖项,其中包括 Maven 解析器中一些非常大的跳跃和许多锁定相关的更新。我想知道在这些情况下,大家是否遇到过差异。这个版本尚未作为稳定版发布,但如果您在使用 Mac,可以通过以下命令获得预发布 CLI:`brew uninstall clojure` 然后 `brew install clojure/tools/[email protected]`。当然,请移除所有对-Sthreads 1 的修改。
by
编辑 by
不确定这有没有帮助,但今天在我最新的 Clojure 中又遇到了这个问题。
```
2:46:25 错误 下载: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"

在此期间,我将我的互联网连接升级到光纤,但这仍然会发生....
所以,我最初关于在“慢网络”上发生这种情况的假设是不正确的。
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] 构建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)
    在 o
是的,我对一组新的 Maven 库进行了部分升级,我认为这会有所帮助,但这是一个很大的改变。
...