2017-02-03 91 views
0

我使用Eclipse Aether,并且从https仓库下载工件时遇到问题。 (例如:https://jitpack.io)。 下面的代码:Eclipse Aether从https仓库下载工件

RepositorySystem system = Booter.newRepositorySystem(); 
    RepositorySystemSession session = Booter.newRepositorySystemSession(system); 
    Artifact artifact = new DefaultArtifact("com.github.rubenlagus:TelegramBots:2.4.0"); 
    List<RemoteRepository> reps = Lists.newArrayList(); 
    RemoteRepository repository = new RemoteRepository.Builder(
      "jitpack", "default", "https://jitpack.io").build(); 
    reps.add(repository); 
    reps.addAll(Booter.newRepositories(system, session)); 
    ArtifactRequest artifactRequest = new ArtifactRequest(); 
    artifactRequest.setArtifact(artifact); 

    artifactRequest.setRepositories(reps); 

    ArtifactResult artifactResult = system.resolveArtifact(session, artifactRequest); 

代码我需要从这个蓝天 - 演示存储库。当我运行这个溶于乙醚,示范项目,它工作正常,但是当我在我的测试项目运行的类副本,它给我这个例外:

Downloading: https://jitpack.io/com/github/rubenlagus/TelegramBots/2.4.0/TelegramBots-2.4.0.jar 

org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact com.github.rubenlagus:TelegramBots:jar:2.4.0 from/to jitpack (https://jitpack.io): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
at org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:43) 
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:355) 
at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67) 
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:581) 
at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:249) 
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:520) 
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421) 
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246) 
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223) 
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:294) 
at com.weaxme.ResolveArtifact.main(ResolveArtifact.java:54) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 


Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1904) 
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:279) 
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:273) 
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1446) 
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:209) 
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:913) 
at sun.security.ssl.Handshaker.process_record(Handshaker.java:849) 
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1023) 
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332) 
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359) 
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343) 
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:535) 
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:403) 
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:177) 
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:304) 
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:611) 
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:446) 
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863) 
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72) 
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57) 
at org.apache.http.impl.client.DecompressingHttpClient.execute(DecompressingHttpClient.java:158) 
at org.eclipse.aether.transport.http.HttpTransporter.execute(HttpTransporter.java:318) 
at org.eclipse.aether.transport.http.HttpTransporter.implGet(HttpTransporter.java:274) 
at org.eclipse.aether.spi.connector.transport.AbstractTransporter.get(AbstractTransporter.java:59) 
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask(BasicRepositoryConnector.java:447) 
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:350) 
... 14 more 

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385) 
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) 
at sun.security.validator.Validator.validate(Validator.java:260) 
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326) 
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231) 
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126) 
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1428) 
... 36 more 

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196) 
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268) 
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380) 
... 42 more 

使用的类: https://github.com/eclipse/aether-demo/blob/master/aether-demo-snippets/src/main/java/org/eclipse/aether/examples/ResolveArtifact.java

+0

您正在使用哪个java版本? – Andrejs

+0

我正在使用jdk 1.7 –

+0

您需要将证书添加到您的JDK安装中,该消息暗示:'sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到有效的证书路径'... – khmarbaise

回答

1

我解决我的问题。在Java 8中运行应用程序。