我遇到了这个问题,花了一些时间才弄清楚。
由于某些原因,下载eclipse工件失败了。
这让我感到非常沮丧。
我发现问题在于$HOME/.m2/repository
下的目录权限设置错误。
下载依赖项未能写入任何文件到本地的Maven库,这导致我的项目中依赖项解析失败。
错误与FileNotFound
相关 - 而不是“我不能写入这个目录”。
这更让人困惑,因为我有一些依赖项在那个目录中(可能是以前下载的)。
我怀疑是挂载到Docker容器内的本地maven库更改了目录权限。
我在Slack上报告了这个问题,并按照Alex Miller的建议提出了这个问题。
他提到这可能是由于maven库引起的,而这超出了tools.deps的控制范围。
在我看来,当maven库试图创建本地文件时,并不会报错,而当tools.deps尝试读取文件时,我们会得到一个异常,这有点令人奇怪。
重现步骤
rm -rf ~/.m2/repository/org/eclipse
mkdir -p ~/.m2/repository/org/eclipse/
chown root:root ~/.m2/repository/org/eclipse
clojure -Sdeps '{:deps {info.sunng/ring-jetty9-adapter {:mvn/version "0.22.0"}}}'
异常
clojure -Sdeps '{:deps {info.sunng/ring-jetty9-adapter {:mvn/version "0.22.0"}}}'
警告:S3TransporterFactory类加载失败
警告:S3TransporterFactory类加载失败
警告:S3TransporterFactory类加载失败
警告:S3TransporterFactory类加载失败
SLF4J:无法加载类"org.slf4j.impl.StaticLoggerBinder"。
SLF4J:采用无操作(NOP)日志记录实现
SLF4J:有关详细信息,请参阅http://www.slf4j.org/codes.html#StaticLoggerBinder
警告:S3TransporterFactory类加载失败
警告:S3TransporterFactory类加载失败
警告:S3TransporterFactory类加载失败
警告:S3TransporterFactory类加载失败
构建类路径错误。无法读取org.eclipse.jetty.websocket:websocket-servlet:jar:11.0.15的工件描述符
org.eclipse.aether.resolution.ArtifactDescriptorException:无法读取org.eclipse.jetty.websocket:websocket-servlet:jar:11.0.15的工件描述符
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(Unknown Source)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(Unknown Source)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor(Unknown Source)
at clojure.tools.deps.extensions.maven$read_descriptor.invokeStatic(maven.clj:115)
at clojure.tools.deps.extensions.maven$read_descriptor.invoke(maven.clj:106)
at clojure.tools.deps.extensions.maven$fn__825.invokeStatic(maven.clj:146)
at clojure.tools.deps.extensions.maven$fn__825.invoke(maven.clj:143)
at clojure.lang.MultiFn.invoke(MultiFn.java:244)
at clojure.tools.deps$expand_deps$children_task__463$fn__465$fn__466.invoke(deps.clj:407)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$with_bindings_STAR_.invokeStatic(core.clj:1990)
at clojure.core$with_bindings_STAR_.doInvoke(core.clj:1990)
at clojure.lang.RestFn.invoke(RestFn.java:425)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at clojure.core$apply.invokeStatic(core.clj:671)
at clojure.core$bound_fn_STAR_$fn__7194.doInvoke(core.clj:2020)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at clojure.lang.AFn.call(AFn.java:18)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
原因:org.eclipse.aether.resolution.ArtifactResolutionException:不能从/to central (https://repo1.maven.org/maven2/)传输工件org.eclipse.jetty.websocket:websocket-servlet:pom:11.0.15:/home/ieugen/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.15/websocket-servlet-11.0.15.pom.part.lock(找不到文件或目录)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(Unknown Source)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(Unknown Source)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(Unknown Source)
... 25 more
原因:org.eclipse.aether.transfer.ArtifactTransferException:不能从/to central (https://repo1.maven.org/maven2/)传输工件org.eclipse.jetty.webdriver:webdriver_widget:pom:11.0.15:/home/ieugen/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.15/websocket-servlet-11.0.15.pom.part.lock(找不到文件或目录)
at org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(Unknown Source)
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(Unknown Source)
at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(Unknown Source)
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(Unknown Source)
at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(Unknown Source)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(Unknown Source)
... 28 more
原因:java.io.FileNotFoundException:/home/ieugen/.m2/repository/org/eclipse/jetty/websocket/websocket-servlet/11.0.15/websocket-servlet-11.0.15.pom.part.lock(找不到文件或目录)