我遇到了这个错误,花了很长时间才弄清楚。
由于某种原因,下载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:无法从中央仓库传至 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:无法从中央仓库传至 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.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 (不存在文件或目录)