【问题标题】:Error protocol_version Java 6 with maven 3.2.5带有 maven 3.2.5 的错误协议版本 Java 6
【发布时间】:2020-06-02 11:49:03
【问题描述】:

您好,我在 java 1.6 中遇到 maven 错误。

我已经在stackoverflow和其他网站尝试了很多解决方案,但我不知道如何解决。

这是错误日志:

    [ERROR] Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5: Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to uk (https://repo1.maven.org/maven2/): Received fatal alert: protocol_version -> [Help 1]
org.apache.maven.plugin.PluginResolutionException: Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5
    at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:122)
    at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor(DefaultMavenPluginManager.java:150)
    at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getMojoDescriptor(DefaultMavenPluginManager.java:269)
    at org.apache.maven.plugin.DefaultBuildPluginManager.getMojoDescriptor(DefaultBuildPluginManager.java:239)
    at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.setupMojoExecution(DefaultLifecycleExecutionPlanCalculator.java:158)
    at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.setupMojoExecutions(DefaultLifecycleExecutionPlanCalculator.java:145)
    at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.calculateExecutionPlan(DefaultLifecycleExecutionPlanCalculator.java:122)
    at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.calculateExecutionPlan(DefaultLifecycleExecutionPlanCalculator.java:135)
    at org.apache.maven.lifecycle.internal.builder.BuilderCommon.resolveBuildPlan(BuilderCommon.java:97)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:109)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:302)
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:217)
    at org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor(DefaultRepositorySystem.java:287)
    at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:108)
    ... 25 more

我正在使用 Java 1.6 JDK 和 Maven 3.2.5(发现这是允许 java 1.6 的最后一个版本)。

我已经尝试在 maven settings.xml 上使用 set MAVEN_OPTS=-Dhttps.protocols=TLSv1.1,TLSv1.2

如果我使用 maven 执行“更新项目”,它可以完美运行,而且如果我尝试连接到 maven 尝试访问的 URL,我可以打开它,但在 Eclipse 中它会失败。

如果您需要更多信息,请告诉我,我会更新帖子。

感谢您的建议。

【问题讨论】:

  • 您能否尝试通过运行mvn -U clean install 来强制检查更新的版本和快照?输出是什么?还有你为什么用EOL Java version
  • 同样的错误@Boris
  • 我相信 Java 6 只支持 TLSv1(可能是 TLSv1.1),因此它很可能无法与需要更高 TLS 版本的服务器通信。你真的需要使用 Java 6 来运行你的 Maven,你也可以使用更新的版本,并使用源/目标设置来编译到较低的 Java 版本。
  • Java 6 不支持所需的 TLSv1.2。您必须至少使用 JDK 7 和 -Dhttps.protocolls=TLSv1.2....
  • 日食失败是什么意思?它在你的命令行上工作了吗?

标签: java maven


【解决方案1】:

问题的根本原因:

(此处不涉及 Maven 版本。“protocol_version”错误来自不支持 TLSv1.2 或更高版本的 Java 6 内置 JCE 提供程序。)

您可能的解决方案是:

  • 升级到 Java 7(或者更好的是 Java 8 或 11)。 Java 6 已停产。你不应该使用它,你的客户也不应该使用它。

  • 尝试在运行 Maven 的 Java 6 JVM 中使用第 3 方 JCE 提供程序;请参阅How to use TLS 1.2 in Java 6 获取建议。

  • 将您自己的 Artifactory 或 Nexus 存储库设置为 Maven Central 的缓存,并配置 Maven 以使用它。

  • 将 Maven 配置为在与 Maven Central 通信时使用 HTTP(不是 HTTPS);见Force m2e to use http instead of https。 (但请注意,这会使您的构建过程容易受到偷偷注入您的依赖项的特洛伊木马版本的攻击。)

  • 手动下载并添加您需要的工件(依赖 POM 和 JAR 文件)到本地(例如 ~/.m2)Maven 存储库。


请注意,升级是最佳解决方案。对于不升级 Java 平台的人来说,生活只会变得更加困难。您(或您的前任)应该在 2012 年......在 Java 6 公共更新停止之前进行了升级。

【讨论】:

  • 我非常感谢您的回答,除了升级之外,我会尝试所有这些。我知道这是最好的解决方案,但它不在我手中(希望可以)。奇怪的是我已经下载了 2.5 版本并放在 .m2 文件夹中,但仍然是同样的错误。
【解决方案2】:

对您来说可能为时已晚。但是这个问题的另一个可能的解决方法是使用代理服务器,它可以通过 http(或一些较旧的加密协议)运行。

使用过时的协议存在安全风险,因此请务必以不会暴露在互联网上的方式运行它。但是如果你真的不能升级你的环境,这可能是要走的路。有代理数据的免费应用程序(例如 Sonatype Nexus)。您的应用程序将从 Nexus 获取文件,并且 Nexus 将使用最新协议从 Maven Central 读取文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多