Gradle构建失败,出现未知主机异常。

6

我刚刚安装了新版本的Android Studio并尝试使用内置模板创建项目。

我的环境是: Windows 7,SP1,64位 在一个安全域环境中,我是我的计算机上的域管理员。

这是我看到的:

C:\Users\stuz\AndroidStudioProjects\test>gradlew compileDebug --stacktrace
Downloading file://C:/Users/stuz/.gradle/wrapper/dists/gradle-1.10-all.zip
Exception in thread "main" java.lang.RuntimeException: java.net.UnknownHostExcep
tion: C
        at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAcc
essManager.java:78)
        at org.gradle.wrapper.Install.createDist(Install.java:47)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)
Caused by: java.net.UnknownHostException: C
        at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at sun.net.ftp.impl.FtpClient.doConnect(Unknown Source)
        at sun.net.ftp.impl.FtpClient.tryConnect(Unknown Source)
        at sun.net.ftp.impl.FtpClient.connect(Unknown Source)
        at sun.net.ftp.impl.FtpClient.connect(Unknown Source)
        at sun.net.www.protocol.ftp.FtpURLConnection.connect(Unknown Source)
        at sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(Unknown Sour
ce)
        at org.gradle.wrapper.Download.downloadInternal(Download.java:59)
        at org.gradle.wrapper.Download.download(Download.java:45)
        at org.gradle.wrapper.Install$1.call(Install.java:60)
        at org.gradle.wrapper.Install$1.call(Install.java:47)
        at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAcc
essManager.java:65)

看起来它正在尝试从文件URL C:/Users/stuz/.gradle/wrapper/dists/gradle-1.10-all.zip中的“主机” 'C' 进行ftp。这不会有好结果。 - mharper
我不知道那是否是问题,但本地文件URL以三个斜杠开头。此外别忘了在属性文件中转义冒号。另外,我不确定为什么您要使用指向gradlew自己下载目录的URL,以及这是否有效。 - Peter Niederwieser
6个回答

2
这个解决方案对我有用...
在你的项目目录中找到文件 gradlew.bat,在该文件中将 DEFAULT_JVM_OPTS 变量更改如下:
set DEFAULT_JVM_OPTS=-Dhttp.proxyHost=YOUR_HOST -Dhttp.proxyPort=PORT -Dhttp.proxyUser=USERNAME -Dhttp.proxyPassword=PASSWORD -Dhttps.proxyHost=YOUR_HOST -Dhttps.proxyPort=PORT -Dhttps.proxyUser=USERNAME -Dhttps.proxyPassword=PASSWORD

然后运行gradlew clean build

1
问题出在你的 gradle/wrapper/gradle_wrapper.properties 文件中。我不确定是怎么发生的,但是你在可下载的Gradle分发版本的URL上有一个不正确的链接。请将该行更改为以下内容:
distributionUrl=file://C:/Users/stuz/.gradle/wrapper/dists/gradle-1.10-all.zip

转换为:

distributionUrl=http\://services.gradle.org/distributions/gradle-1.10-all.zip

0

检查您是否在安全网络上 - 如果是这种情况,则在gradle/wrapper/gradle_wrapper.properties文件中

distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip

这行代码中有https,被安全网络拒绝了。 我切换到不安全的网络后,它开始正常工作。


0
在您的项目文件夹下,进入 platforms/android/cordova/lib/builders/GradleBuilder.js 文件, 找到 distributionUrl 并将 https 替换为 http,并将 "services" 替换为 "downloads"。
distributionUrl=http\://downloads.gradle.org/distributions/gradle-2.4-all.zip

-1

将分发 URL 更改为 http://services.gradle.org/distributions/gradle-1.10-all.zip 后。

如果您仍然对 services.gradle.org 收到未知主机异常,请尝试将 HTTP / HTTPS 代理设置为您的环境变量。请参见下面的帖子。

https://dev59.com/el0Z5IYBdhLWcg3wtSLr#59045565


-1
你需要使用 Windows 风格的文件 URI 使其有效。

文件 URI 的 Windows 参考

distributionUrl=file\:///C\:/Users/<your_path_separated_by_/_chars>/gradle-2.4-all.zip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接