Maven,访问被拒绝:http://repo1.maven.org/maven2

Vov*_*van 8 java compilation build maven

我刚刚下载了Maven的最新版本.

而当我想跑

mvn archetype:generate

我收到错误消息

[警告]读取原型目录时出错 http://repo1.maven.org/maven2 org.apache.maven.wagon.authorization.AuthorizationException:访问被拒绝:http: //repo1.maven.org/maven2,De reasonPhrase:拒绝访问.在org.apache.maven.wagon.shared.http4.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:928)在org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:116)在org.apache.maven.wagon .StreamWagon.getIfNewer(StreamWagon.java:88)在org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61)在org.apache.maven.archetype.source.RemoteCatalogArchetypeDataSource.downloadCatalog(RemoteCatalogArchetypeDataSource.java:119 )在org.apache.maven.archetype.source.RemoteCatalogArchetypeDataSource.getArchetypeCatalog(RemoteCatalogArchetypeDataSource.java:87)在org.apache.maven.archetype.DefaultArchetypeManager.getRemoteCatalog(DefaultArchetypeManager.java:216)在org.apache.maven.archetype. DefaultArchetypeManager.getRemoteCatalog(DefaultArchetypeManager.java:205)在org.apache.maven.archetype.ui.generation.DefaultArchetypeSelector.getArchetypesByCatalog(DefaultArchetypeSelector.java:200)在org.apache.maven.archetype.ui.generation.DefaultArchetypeSelector.selectArchetyp E(DefaultArchetypeSelector.java:71)在org.apache.maven.archetype.mojos.CreateProjectFromArchetypeMojo.execute(CreateProjectFromArchetypeMojo.java:197)在org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)在有机位于org.apache.maven.lifecycle.internal的org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)的.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) .MojoExecutor.execute(MojoExecutor.java:145)org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java) :59)在org.apache的org.apache.maven.life.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161). org.apache.maven.Defa上的maven.DefaultMaven.doExecute(DefaultMaven.java:320)org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)的ultMaven.execute(DefaultMaven.java:156)org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)org .apache.maven.cli.MavenCli.main(MavenCli.java:141)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(来源不明)在sun.reflect.DelegatingMethodAccessorImpl.invoke(来自org.codehaus.plexus.classworlds.launcher.Launcher的org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)的java.lang.reflect.Method.invoke(未知来源)的未知来源.launch(Launcher.java:230)org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) )[警告]在远程目录中找不到原型.默认为内部目录[INFO]未定义原型.使用maven-archetype-quickstart(org.apache.maven.archetypes:maven-archetype-quickstart:1.0)

我没有代理和互联网工作正常.防火墙已关闭.如何解决这个问题呢 ?

谢谢你的帮助.

如果我们查看类org.apache.maven.wagon.shared.http4.AbstractHttpClientWagon 方法fillInputData(InputData inputData),我们可以看到:

public void fillInputData( InputData inputData )
       throws TransferFailedException, ResourceDoesNotExistException,AuthorizationException
    {
     ....
 HttpResponse response;
     ....
 statusCode = response.getStatusLine().getStatusCode();
     ....
 switch ( statusCode )
        {
            case HttpStatus.SC_OK:
                break;

            case HttpStatus.SC_NOT_MODIFIED:
                // return, leaving last modified set to original value so getIfNewer should return unmodified
                return;

            case SC_NULL:
            {
                TransferFailedException e =
                    new TransferFailedException( "Failed to transfer file: " + url + reasonPhrase );
                fireTransferError( resource, e, TransferEvent.REQUEST_GET );
                throw e;
            }

            case HttpStatus.SC_FORBIDDEN:    // <---------THIS
                fireSessionConnectionRefused();
                throw new AuthorizationException( "Access denied to: " + url + reasonPhrase);
       ....
         }
...
}
Run Code Online (Sandbox Code Playgroud)

因此我们在响应中遇到HTTP 403 Forbidden错误导致问题. 但我不知道该怎么办......


所以现在我们知道我们收到了FORBIDDEN错误,因为我们在HTTP请求中没有User-Agent.Thanx到Patouche

Cho*_*ick 11

似乎http://repo1.maven.org/maven2上的目录浏览已被关闭.我不得不求助于获取原型目录.我这样做了:

mvn archetype:generate -DarchetypeCatalog=http://search.maven.org/remotecontent?filepath=archetype-catalog.xml
Run Code Online (Sandbox Code Playgroud)

或者,我猜您可以从该链接下载archetype-catalog.xml文件,并将其放在.m2目录中,如本评论中所述:

http://jira.codehaus.org/browse/ARCHETYPE-202?focusedCommentId=182771&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-182771

  • 另请参阅http://stackoverflow.com/questions/18473398,并在评论中链接到此处.是的,我希望他们能解决它 - 这很疯狂!这特别令人讨厌,因为它可能会被尝试创建他们的第一个项目的新maven用户所击中,他们会认为这是他们系统的一些问题. (3认同)

Tam*_*ath 5

似乎Apache中央存储库已经解决了这个问题.所以没有做任何改变,现在问题就解决了.如果有任何问题,请再试一次并告诉我们.