2011-09-29 110 views
8

我试图从下面的URL从Maven存储库下载单个jar文件。wget无法从maven回购站下载jar文件

http://repo1.maven.org/maven2/com/google/guava/guava-testlib/10.0/guava-testlib-10.0.jar

  • 下载在浏览器中正常工作,而我得到的文件,如预期。

  • 'wget'下载了一些东西,但是我得到的文件看起来不是有效的。在下载的文件上运行'jar -tf'会导致'ZipException:打开zip文件时出错'。

  • 以编程方式从Java下载文件('InputStream'从URL写入'FileOutputStream')下载并创建文件。使用WinZip/7-Zip打开它,它似乎包含一个名为'guava-testlib-10.0'的文件,看起来像我期望得到的jar文件。

  • wget另一个罐子做的工作是(与-U用户代理字符串)

这是wget的/行家或Java /行家之间的一些狡猾的相互作用预计至少在某些时候?这是一个格式不正确的jar文件,我的浏览器可以正确理解和下载吗?这两个对我来说似乎都不太合情合理。

回答

10

wget通常会被中央maven回购阻止,因为有些人玩得不好,并尝试过多。尝试设置用户代理:

wget -U "Any User Agent" http://repo1.maven.org/maven2/com/google/guava/guava-testlib/10.0/guava-testlib-10.0.jar 
+0

用户代理似乎没有任何区别。有或没有,它下载的东西,只是不正确的事情。有趣的是,它不再允许我在没有用户代理的情况下使用源代码jar,所以也许这是与它有关的。 –

+0

没有用户代理,返回码是403(未授权)。不知道为什么你仍然得到.jar: - /你可以在这里复制/粘贴wget的输出吗? – leonm

+0

好吧,没有用户代理的今天wget确实给了403,现在如果我使用用户代理,下载就能正常工作。我想这个罐子可能一夜之间改变了? –