使用“extension (10) should not be present in server_hello”下载错误的依赖项时,带有 JDK 11 的 Maven 失败

Posted

技术标签:

【中文标题】使用“extension (10) should not be present in server_hello”下载错误的依赖项时,带有 JDK 11 的 Maven 失败【英文标题】:Maven with JDK 11 fails when downloading a wrong dependency with "extension (10) should not be presented in server_hello" 【发布时间】:2019-02-24 02:58:28 【问题描述】:

使用 JDK11 在我的项目上运行测试我在调用 Maven Aether 时在这一行出现故障:

https://github.com/jmeter-maven-plugin/jmeter-maven-plugin/blob/master/src/main/java/com/lazerycode/jmeter/mojo/ConfigureJMeterMojo.java#L643

下载错误的依赖项时会发生这种情况:

commons-math3:commons-math3

我的假设是我正面临JDK11 bug:

  - https://***.com/questions/52016415/jdk-11-ssl-error-on-valid-certificate-working-in-previous-versions

如果是问题所在,如何解决?

由于 *** 限制,Stacktrace 被部分截断:

[INFO] [ERROR] Failed to execute goal com.lazerycode.jmeter:jmeter-maven-plugin:DEV-SNAPSHOT:configure (configure) on project test-plugins: Failed to collect dependencies at org.apache.jmeter:ApacheJMeter_components:jar:2.13 -> org.apache.jmeter:jorphan:jar:2.13 -> commons-math3:commons-math3:jar:3.4.1: Failed to read artifact descriptor for commons-math3:commons-math3:jar:3.4.1: Could not transfer artifact commons-math3:commons-math3:pom:3.4.1 from/to JBoss (https://repository.jboss.org/nexus/content/repositories/thirdparty-releases/): extension (10) should not be presented in server_hello -> [Help 1]
[INFO] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.lazerycode.jmeter:jmeter-maven-plugin:DEV-SNAPSHOT:configure (configure) on project test-plugins: Failed to collect dependencies at org.apache.jmeter:ApacheJMeter_components:jar:2.13 -> org.apache.jmeter:jorphan:jar:2.13 -> commons-math3:commons-math3:jar:3.4.1
[INFO]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
[INFO]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
[INFO]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
[INFO]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
[INFO]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
[INFO]     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:51)
[INFO]     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
[INFO]     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:309)
[INFO]     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:194)
[INFO]     at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:107)
[INFO]     at org.apache.maven.cli.MavenCli.execute (MavenCli.java:955)
[INFO]     at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
[INFO]     at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
[INFO]     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
[INFO]     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
[INFO]     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
[INFO]     at java.lang.reflect.Method.invoke (Method.java:566)
[INFO]     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
[INFO]     at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
[INFO]     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
[INFO]     at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
[INFO] ...
[INFO] Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact commons-math3:commons-math3:pom:3.4.1 from/to JBoss (https://repository.jboss.org/nexus/content/repositories/thirdparty-releases/): extension (10) should not be presented in server_hello
[INFO]     at org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed (ArtifactTransportListener.java:52)
[INFO]     at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run (BasicRepositoryConnector.java:365)
[INFO]     at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run (RunnableErrorForwarder.java:75)
[INFO]     at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute (BasicRepositoryConnector.java:583)
[INFO]     at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get (BasicRepositoryConnector.java:259)
[INFO]     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads (DefaultArtifactResolver.java:498)
[INFO]     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve (DefaultArtifactResolver.java:399)
[INFO]     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts (DefaultArtifactResolver.java:224)
[INFO]     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact (DefaultArtifactResolver.java:201)
[INFO]     at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom (DefaultArtifactDescriptorReader.java:261)
[INFO]     at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor (DefaultArtifactDescriptorReader.java:192)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.resolveCachedArtifactDescriptor (DefaultDependencyCollector.java:539)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.getArtifactDescriptorResult (DefaultDependencyCollector.java:522)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:411)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:365)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.process (DefaultDependencyCollector.java:353)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:507)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:460)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:365)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.process (DefaultDependencyCollector.java:353)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies (DefaultDependencyCollector.java:256)
[INFO]     at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies (DefaultRepositorySystem.java:282)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.copyTransitiveRuntimeDependenciesToLibDirectory (ConfigureJMeterMojo.java:643)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.copyTransitiveRuntimeDependenciesToLibDirectory (ConfigureJMeterMojo.java:674)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.copyTransitiveRuntimeDependenciesToLibDirectory (ConfigureJMeterMojo.java:674)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.resolveTestDependenciesAndCopyWithTransitivity (ConfigureJMeterMojo.java:577)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.copyExplicitLibraries (ConfigureJMeterMojo.java:532)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.copyExplicitLibraries (ConfigureJMeterMojo.java:515)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.doExecute (ConfigureJMeterMojo.java:327)
[INFO]     at com.lazerycode.jmeter.mojo.AbstractJMeterMojo.execute (AbstractJMeterMojo.java:233)
[INFO]     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:134)
[INFO]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
[INFO]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
[INFO]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
[INFO]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
[INFO]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
[INFO]     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:51)
[INFO]     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
[INFO]     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:309)
[INFO]     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:194)
[INFO]     at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:107)
[INFO]     at org.apache.maven.cli.MavenCli.execute (MavenCli.java:955)
[INFO]     at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
[INFO]     at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
[INFO]     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
[INFO]     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
[INFO]     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
[INFO]     at java.lang.reflect.Method.invoke (Method.java:566)
[INFO]     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
[INFO]     at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
[INFO]     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
[INFO]     at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
[INFO] Caused by: org.apache.maven.wagon.TransferFailedException: extension (10) should not be presented in server_hello
[INFO]     at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData (AbstractHttpClientWagon.java:1068)
[INFO]     at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData (AbstractHttpClientWagon.java:962)
[INFO]     at org.apache.maven.wagon.StreamWagon.getInputStream (StreamWagon.java:126)
[INFO]     at org.apache.maven.wagon.StreamWagon.getIfNewer (StreamWagon.java:88)
[INFO]     at org.apache.maven.wagon.StreamWagon.get (StreamWagon.java:61)
[INFO]     at org.eclipse.aether.transport.wagon.WagonTransporter$GetTaskRunner.run (WagonTransporter.java:567)
[INFO]     at org.eclipse.aether.transport.wagon.WagonTransporter.execute (WagonTransporter.java:435)
[INFO]     at org.eclipse.aether.transport.wagon.WagonTransporter.get (WagonTransporter.java:412)
[INFO]     at org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask (BasicRepositoryConnector.java:453)
[INFO]     at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run (BasicRepositoryConnector.java:360)
[INFO]     at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run (RunnableErrorForwarder.java:75)
[INFO]     at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute (BasicRepositoryConnector.java:583)
[INFO]     at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get (BasicRepositoryConnector.java:259)
[INFO]     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads (DefaultArtifactResolver.java:498)
[INFO]     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve (DefaultArtifactResolver.java:399)
[INFO]     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts (DefaultArtifactResolver.java:224)
[INFO]     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact (DefaultArtifactResolver.java:201)
[INFO]     at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom (DefaultArtifactDescriptorReader.java:261)
[INFO]     at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor (DefaultArtifactDescriptorReader.java:192)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.resolveCachedArtifactDescriptor (DefaultDependencyCollector.java:539)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.getArtifactDescriptorResult (DefaultDependencyCollector.java:522)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:411)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:365)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.process (DefaultDependencyCollector.java:353)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:507)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:460)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:365)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.process (DefaultDependencyCollector.java:353)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies (DefaultDependencyCollector.java:256)
[INFO]     at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies (DefaultRepositorySystem.java:282)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.copyTransitiveRuntimeDependenciesToLibDirectory (ConfigureJMeterMojo.java:643)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.copyTransitiveRuntimeDependenciesToLibDirectory (ConfigureJMeterMojo.java:674)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.copyTransitiveRuntimeDependenciesToLibDirectory (ConfigureJMeterMojo.java:674)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.resolveTestDependenciesAndCopyWithTransitivity (ConfigureJMeterMojo.java:577)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.copyExplicitLibraries (ConfigureJMeterMojo.java:532)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.copyExplicitLibraries (ConfigureJMeterMojo.java:515)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.doExecute (ConfigureJMeterMojo.java:327)
[INFO]     at com.lazerycode.jmeter.mojo.AbstractJMeterMojo.execute (AbstractJMeterMojo.java:233)
[INFO]     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:134)
[INFO]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
[INFO]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
[INFO]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
[INFO]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
[INFO]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
[INFO]     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:51)
[INFO]     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
[INFO]     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:309)
[INFO]     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:194)
[INFO]     at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:107)
[INFO]     at org.apache.maven.cli.MavenCli.execute (MavenCli.java:955)
[INFO]     at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
[INFO]     at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
[INFO]     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
[INFO]     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
[INFO]     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
[INFO]     at java.lang.reflect.Method.invoke (Method.java:566)
[INFO]     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
[INFO]     at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
[INFO]     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
[INFO]     at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
[INFO] Caused by: javax.net.ssl.SSLHandshakeException: extension (10) should not be presented in server_hello
[INFO]     at sun.security.ssl.Alert.createSSLException (Alert.java:128)
[INFO]     at sun.security.ssl.Alert.createSSLException (Alert.java:117)
[INFO]     at sun.security.ssl.TransportContext.fatal (TransportContext.java:308)
[INFO]     at sun.security.ssl.TransportContext.fatal (TransportContext.java:264)
[INFO]     at sun.security.ssl.TransportContext.fatal (TransportContext.java:255)
[INFO]     at sun.security.ssl.SSLExtensions.<init> (SSLExtensions.java:71)
[INFO]     at sun.security.ssl.ServerHello$ServerHelloMessage.<init> (ServerHello.java:173)
[INFO]     at sun.security.ssl.ServerHello$ServerHelloConsumer.consume (ServerHello.java:864)
[INFO]     at sun.security.ssl.SSLHandshake.consume (SSLHandshake.java:392)
[INFO]     at sun.security.ssl.HandshakeContext.dispatch (HandshakeContext.java:444)
[INFO]     at sun.security.ssl.HandshakeContext.dispatch (HandshakeContext.java:421)
[INFO]     at sun.security.ssl.TransportContext.dispatch (TransportContext.java:178)
[INFO]     at sun.security.ssl.SSLTransport.decode (SSLTransport.java:164)
[INFO]     at sun.security.ssl.SSLSocketImpl.decode (SSLSocketImpl.java:1152)
[INFO]     at sun.security.ssl.SSLSocketImpl.readHandshakeRecord (SSLSocketImpl.java:1063)
[INFO]     at sun.security.ssl.SSLSocketImpl.startHandshake (SSLSocketImpl.java:402)
[INFO]     at org.apache.maven.wagon.providers.http.httpclient.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket (SSLConnectionSocketFactory.java:394)
[INFO]     at org.apache.maven.wagon.providers.http.httpclient.conn.ssl.SSLConnectionSocketFactory.connectSocket (SSLConnectionSocketFactory.java:353)
[INFO]     at org.apache.maven.wagon.providers.http.httpclient.impl.conn.DefaultHttpClientConnectionOperator.connect (DefaultHttpClientConnectionOperator.java:141)
[INFO]     at org.apache.maven.wagon.providers.http.httpclient.impl.conn.PoolingHttpClientConnectionManager.connect (PoolingHttpClientConnectionManager.java:353)
[INFO]     at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.MainClientExec.establishRoute (MainClientExec.java:380)
[INFO]     at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.MainClientExec.execute (MainClientExec.java:236)
[INFO]     at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.ProtocolExec.execute (ProtocolExec.java:184)
[INFO]     at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RetryExec.execute (RetryExec.java:88)
[INFO]     at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RedirectExec.execute (RedirectExec.java:110)
[INFO]     at org.apache.maven.wagon.providers.http.httpclient.impl.client.InternalHttpClient.doExecute (InternalHttpClient.java:184)
[INFO]     at org.apache.maven.wagon.providers.http.httpclient.impl.client.CloseableHttpClient.execute (CloseableHttpClient.java:82)
[INFO]     at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.execute (AbstractHttpClientWagon.java:834)
[INFO]     at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData (AbstractHttpClientWagon.java:985)
[INFO]     at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData (AbstractHttpClientWagon.java:962)
[INFO]     at org.apache.maven.wagon.StreamWagon.getInputStream (StreamWagon.java:126)
[INFO]     at org.apache.maven.wagon.StreamWagon.getIfNewer (StreamWagon.java:88)
[INFO]     at org.apache.maven.wagon.StreamWagon.get (StreamWagon.java:61)
[INFO]     at org.eclipse.aether.transport.wagon.WagonTransporter$GetTaskRunner.run (WagonTransporter.java:567)
[INFO]     at org.eclipse.aether.transport.wagon.WagonTransporter.execute (WagonTransporter.java:435)
[INFO]     at org.eclipse.aether.transport.wagon.WagonTransporter.get (WagonTransporter.java:412)
[INFO]     at org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask (BasicRepositoryConnector.java:453)
[INFO]     at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run (BasicRepositoryConnector.java:360)
[INFO]     at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run (RunnableErrorForwarder.java:75)
[INFO]     at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute (BasicRepositoryConnector.java:583)
[INFO]     at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get (BasicRepositoryConnector.java:259)
[INFO]     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads (DefaultArtifactResolver.java:498)
[INFO]     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve (DefaultArtifactResolver.java:399)
[INFO]     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts (DefaultArtifactResolver.java:224)
[INFO]     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact (DefaultArtifactResolver.java:201)
[INFO]     at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom (DefaultArtifactDescriptorReader.java:261)
[INFO]     at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor (DefaultArtifactDescriptorReader.java:192)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.resolveCachedArtifactDescriptor (DefaultDependencyCollector.java:539)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.getArtifactDescriptorResult (DefaultDependencyCollector.java:522)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:411)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:365)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.process (DefaultDependencyCollector.java:353)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.doRecurse (DefaultDependencyCollector.java:507)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:460)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency (DefaultDependencyCollector.java:365)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.process (DefaultDependencyCollector.java:353)
[INFO]     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies (DefaultDependencyCollector.java:256)
[INFO]     at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies (DefaultRepositorySystem.java:282)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.copyTransitiveRuntimeDependenciesToLibDirectory (ConfigureJMeterMojo.java:643)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.copyTransitiveRuntimeDependenciesToLibDirectory (ConfigureJMeterMojo.java:674)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.copyTransitiveRuntimeDependenciesToLibDirectory (ConfigureJMeterMojo.java:674)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.resolveTestDependenciesAndCopyWithTransitivity (ConfigureJMeterMojo.java:577)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.copyExplicitLibraries (ConfigureJMeterMojo.java:532)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.copyExplicitLibraries (ConfigureJMeterMojo.java:515)
[INFO]     at com.lazerycode.jmeter.mojo.ConfigureJMeterMojo.doExecute (ConfigureJMeterMojo.java:327)
[INFO]     at com.lazerycode.jmeter.mojo.AbstractJMeterMojo.execute (AbstractJMeterMojo.java:233)
[INFO]     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:134)
[INFO]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
[INFO]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
[INFO]     at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
[INFO]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
[INFO]     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
[INFO]     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:51)
[INFO]     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
[INFO]     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:309)
[INFO]     at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:194)
[INFO]     at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:107)
[INFO]     at org.apache.maven.cli.MavenCli.execute (MavenCli.java:955)
[INFO]     at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
[INFO]     at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
[INFO]     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
[INFO]     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
[INFO]     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
[INFO]     at java.lang.reflect.Method.invoke (Method.java:566)
[INFO]     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
[INFO]     at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
[INFO]     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
[INFO]     at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)

【问题讨论】:

【参考方案1】:

OpenSSL 1.1.1 的规范更加严格,因此严格来说这不是一个错误,但它会影响一些用户。它已在 JDK 12 中解决,并针对 JDK 11.0.2,因此补丁需要一段时间(反向端口为 https://bugs.openjdk.java.net/browse/JDK-8210005)。

就我而言,我使用 nginx 作为“SSL 代理”做了一个解决方法:

server 
    listen 80;
    server_name myjbos-s-repository.mydomain.com;
    location / 
        proxy_set_header Host repository.jboss.org;
        proxy_pass https://repository.jboss.org/;
        proxy_ssl_session_reuse off;
        proxy_redirect off;
    

然后您必须将您的存储库 URL 设置为 https://myjbos-s-repository.mydomain.com/nexus/content/repositories/thirdparty-releases/

如果需要,您也可以使用自己的证书:

server 
    listen 443 http2 ssl;
    server_name myjbos-s-repository.mydomain.com;
    ssl_certificate /etc/conf/letsencryptcertificates/live/myjbos-s-repository.mydomain.com/fullchain.pem;
    ssl_certificate_key /etc/conf/letsencryptcertificates/live/myjbos-s-repository.mydomain.com/privkey.pem;
    location / 
        proxy_set_header Host repository.jboss.org;
        proxy_pass https://repository.jboss.org/;
        proxy_ssl_session_reuse off;
        proxy_redirect off;
    

【讨论】:

谢谢,但我正在寻找客户端解决方法,因为我无法控制将要进行构建的 VM。【参考方案2】:

附加介绍

@cocorossello 在他的回答中提供了问题的快速信息介绍,我只会补充一点,一切都是从 Java 邮件列表 here >> 开始的。

此消息还包括重现“问题”的快速示例:

import java.net.URL;
import java.io.InputStream;

public class Fetch 
    public static void main(final String[] args) throws Exception 
        final URL targetURL = new URL("https://repository.jboss.org/nexus/content/groups/public/javax/media/jai-core/1.1.3/jai-core-1.1.3.pom");
        try (final InputStream is = targetURL.openConnection().getInputStream()) 
            is.read();
        
        System.out.println("Done");
    


客户端解决方案:

问题与 JSSEJava 安全套接字扩展)模块/库有关 - Java 安全 SSL 的内部实现/TLS 连接。

解决方法:所以要解决这个问题,我们需要利用不同的 SSL/TLS 实现,例如Bouncy Castle

我在 GitHub 中创建了一个小项目作为概念证明:jdk11-server_hello-workaround,主类是 FetchWorkaround.java,如下所示:

import org.bouncycastle.crypto.tls.*;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.security.SecureRandom;

public class FetchWorkaround 

    private static final String HOST = "repository.jboss.org";
    private static final int PORT = 443;
    private static final String RESOURCE = "/nexus/content/groups/public/javax/media/jai-core/1.1.3/jai-core-1.1.3.pom";

    public static void main(String[] args) throws Exception 
        TlsClientProtocol protocol = getTlsClientProtocol();
        sendRequest(protocol);
        readResponseStream(protocol.getInputStream());
    

    private static void readResponseStream(InputStream input) throws IOException 
        BufferedReader reader = new BufferedReader(new InputStreamReader(input));
        String line;
        try 
            while ((line = reader.readLine()) != null) 
                System.out.println(line);
            
         catch (TlsNoCloseNotifyException exception) 
            // do nothing
        
    

    private static void sendRequest(TlsClientProtocol protocol) throws IOException 
        OutputStream output = protocol.getOutputStream();
        output.write(("GET " + RESOURCE + " HTTP/1.1\r\n").getBytes("UTF-8"));
        output.write(("Host: " + HOST + "\r\n").getBytes("UTF-8"));
        output.write("Connection: close\r\n".getBytes("UTF-8")); // To force socket close immediately.
        output.write("\r\n".getBytes("UTF-8")); // HTTP 1.1 requirement: last line must be empty line.
        output.flush();
    

    private static TlsClientProtocol getTlsClientProtocol() throws IOException 
        SecureRandom secureRandom = new SecureRandom();
        Socket socket = new Socket(InetAddress.getByName(HOST), PORT);
        TlsClientProtocol protocol = new TlsClientProtocol(socket.getInputStream(), socket.getOutputStream(), secureRandom);
        DefaultTlsClient client = new DefaultTlsClient() 
            public TlsAuthentication getAuthentication() throws IOException 
                TlsAuthentication auth = new TlsAuthentication() 
                    public void notifyServerCertificate(Certificate serverCertificate) throws IOException 
                    

                    public TlsCredentials getClientCredentials(CertificateRequest certificateRequest) throws IOException 
                        return null;
                    
                ;
                return auth;
            
        ;
        protocol.connect(client);
        return protocol;
    


它通过定义TlsClientProtocol 使用套接字连接到主机(来自Fetch.java 的主机)并将GET 请求发送到所需的资源(相同的pom.xml),输出看起来是这样的:

HTTP/1.1 200 OK
Date: Wed, 26 Sep 2018 04:40:54 GMT
Server: Nexus/2.14.6-02
<... other headers ...>

<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
  <... etc ...>
  <groupId>javax.media</groupId>
  <artifactId>jai-core</artifactId>
  <version>1.1.3</version>
  <... etc ...>

所以 pom.xml 被成功获取。


其他信息

    PoC 表明可以在客户端处理 server_hello 相关问题,但可能会很耗时(尤其是替换 Aether 相关问题逻辑)。

    在question >> 的答案中,展示了如何使用套接字下载二进制数据 - 只是处理响应顶部标题的辅助方法。

    [需要访问 VM] Here >> 是如何在 Java 级别设置 Bouncy Castle Provider 的手册.

    [需要访问虚拟机] 如果可以在虚拟机(构建/CI)端更新 JDK - 它可能是合理的使用错误修复 PATCH >> 进行自定义 JDK 构建 - 它仅影响 sun.security.ssl.SSLExtensions 类 - 或仅使用相关的 sources structure >>

【讨论】:

【参考方案3】:

在尝试使用 OpenJDK 11 构建时,我在 Activiti 项目中遇到了同样的问题,因为依赖于 Drools,而 Drools 又试图从 JBoss 存储库而不是 Maven 中心提取自己的传递依赖项。

虽然 JBoss Nexus 存储库 https://issues.jboss.org/browse/NEXUS-181 或 JDK 11 上的问题正在解决,但我通过使用自定义 settings.xml 文件在客户端进行了修复,该文件将 jcenter 设置为 jboss 存储库的镜像:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <mirrors>
    <!-- use this mirror with OpenJDK 11 as a workaround for https://bugs.openjdk.java.net/browse/JDK-8210005 and https://issues.jboss.org/browse/NEXUS-181 -->
    <mirror>
      <id>jboss-public-repository-group-central-mirror</id>
      <url>https://jcenter.bintray.com</url>
      <mirrorOf>jboss-public-repository-group</mirrorOf>
    </mirror>
  </mirrors>
</settings>

并调用我的构建:mvn -s settings.xml install

【讨论】:

以上是关于使用“extension (10) should not be present in server_hello”下载错误的依赖项时,带有 JDK 11 的 Maven 失败的主要内容,如果未能解决你的问题,请参考以下文章

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份