如何使用带有 WSL2 项目的 Intellij IDEA 设置 gradle?
How to setup gradle with Intellij IDEA with WSL2 project?
我在里面克隆了一个项目ubuntu wsl \wsl$\Ubuntu\home\username\project
. Opened it inside Intellij IDEA Ultimate 2020.1.3 and tried to import as gradle project, but I am getting uninformative error message:
这是我在 IDEA 中的 gradle 配置:
问题是我应该如何在IDEA中打开我的项目?
编辑:
导入项目的日志包含此堆栈跟踪。可能这会导致问题。
org.gradle.tooling.GradleConnectionException: Could not install Gradle distribution from 'https://services.gradle.org/distributions/gradle-6.5.1-all.zip'.
at org.gradle.tooling.internal.consumer.DistributionFactory$ZippedDistribution.getToolingImplementationClasspath(DistributionFactory.java:139)
at org.jetbrains.plugins.gradle.GradleConnectorService$DistributionWrapper.getToolingImplementationClasspath(GradleConnectorService.kt:287)
at org.gradle.tooling.internal.consumer.loader.CachingToolingImplementationLoader.create(CachingToolingImplementationLoader.java:41)
at org.gradle.tooling.internal.consumer.loader.SynchronizedToolingImplementationLoader.create(SynchronizedToolingImplementationLoader.java:44)
at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.onStartAction(LazyConsumerActionExecutor.java:147)
at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.run(LazyConsumerActionExecutor.java:129)
at org.gradle.tooling.internal.consumer.connection.CancellableConsumerActionExecutor.run(CancellableConsumerActionExecutor.java:45)
at org.gradle.tooling.internal.consumer.connection.ProgressLoggingConsumerActionExecutor.run(ProgressLoggingConsumerActionExecutor.java:61)
at org.gradle.tooling.internal.consumer.connection.RethrowingErrorsConsumerActionExecutor.run(RethrowingErrorsConsumerActionExecutor.java:38)
at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor.lambda$run[=11=](DefaultAsyncConsumerActionExecutor.java:62)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.io.IOException: Incorrect function
at java.base/sun.nio.ch.FileDispatcherImpl.lock0(Native Method)
at java.base/sun.nio.ch.FileDispatcherImpl.lock(FileDispatcherImpl.java:100)
at java.base/sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1161)
at java.base/java.nio.channels.FileChannel.tryLock(FileChannel.java:1165)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:55)
at org.gradle.wrapper.Install.createDist(Install.java:48)
at org.gradle.tooling.internal.consumer.DistributionInstaller.install(DistributionInstaller.java:72)
at org.gradle.tooling.internal.consumer.DistributionFactory$ZippedDistribution.getToolingImplementationClasspath(DistributionFactory.java:133)
... 15 more
编辑2:
附上使用 gradle init
命令实例化新项目的完整日志:
https://pastebin.com/G4xhR3N3
对我有用的解决方法(我有 WSL 2):
- 在您的 Windows 文件系统中创建一个项目文件夹。
- 使用 mklink 和 mklink /D,创建指向 WSL 文件和文件夹的符号链接(我将 WSL 2 文件系统 \wsl$ 安装为我的 L: 驱动器,可能这是一项要求)。 mklink 命令需要 运行 作为管理员(运行 cmd.exe 作为管理员)。示例:“mklink /D src L:\home\john\project\src”。我 sym-linked 的文件列表:
.git/ (编辑: git 在 Windows 中的支持side 不适用于这种方法,因为 git 检测符号链接和常规文件之间的差异;但是,您仍然可以在 WSL 上使用 git。
.git忽略
- <符号链接>build.gradle
- <符号链接>settings.gradle
源/
- 注意 .gradle、gradle、gradew、gradlew.bat 和 .idea 没有符号链接。 WSL 应该有自己的 .gradle 和构建文件夹,并且没有 IntelliJ gradle 包装器。
- IntelliJ Gradle 和 WSL gradle 应该可以很好地独立工作。
JetBrains 发布了 2021.1 版 Intellij IDEA,对 WSL 2 提供了更多支持。现在可以使用 Gradle 和 Maven 从 Ubuntu mount 导入项目。 https://blog.jetbrains.com/idea/2021/01/intellij-idea-2021-1-eap-1/
我在里面克隆了一个项目ubuntu wsl \wsl$\Ubuntu\home\username\project
. Opened it inside Intellij IDEA Ultimate 2020.1.3 and tried to import as gradle project, but I am getting uninformative error message:
这是我在 IDEA 中的 gradle 配置:
问题是我应该如何在IDEA中打开我的项目?
编辑:
导入项目的日志包含此堆栈跟踪。可能这会导致问题。
org.gradle.tooling.GradleConnectionException: Could not install Gradle distribution from 'https://services.gradle.org/distributions/gradle-6.5.1-all.zip'.
at org.gradle.tooling.internal.consumer.DistributionFactory$ZippedDistribution.getToolingImplementationClasspath(DistributionFactory.java:139)
at org.jetbrains.plugins.gradle.GradleConnectorService$DistributionWrapper.getToolingImplementationClasspath(GradleConnectorService.kt:287)
at org.gradle.tooling.internal.consumer.loader.CachingToolingImplementationLoader.create(CachingToolingImplementationLoader.java:41)
at org.gradle.tooling.internal.consumer.loader.SynchronizedToolingImplementationLoader.create(SynchronizedToolingImplementationLoader.java:44)
at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.onStartAction(LazyConsumerActionExecutor.java:147)
at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.run(LazyConsumerActionExecutor.java:129)
at org.gradle.tooling.internal.consumer.connection.CancellableConsumerActionExecutor.run(CancellableConsumerActionExecutor.java:45)
at org.gradle.tooling.internal.consumer.connection.ProgressLoggingConsumerActionExecutor.run(ProgressLoggingConsumerActionExecutor.java:61)
at org.gradle.tooling.internal.consumer.connection.RethrowingErrorsConsumerActionExecutor.run(RethrowingErrorsConsumerActionExecutor.java:38)
at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor.lambda$run[=11=](DefaultAsyncConsumerActionExecutor.java:62)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.io.IOException: Incorrect function
at java.base/sun.nio.ch.FileDispatcherImpl.lock0(Native Method)
at java.base/sun.nio.ch.FileDispatcherImpl.lock(FileDispatcherImpl.java:100)
at java.base/sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1161)
at java.base/java.nio.channels.FileChannel.tryLock(FileChannel.java:1165)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:55)
at org.gradle.wrapper.Install.createDist(Install.java:48)
at org.gradle.tooling.internal.consumer.DistributionInstaller.install(DistributionInstaller.java:72)
at org.gradle.tooling.internal.consumer.DistributionFactory$ZippedDistribution.getToolingImplementationClasspath(DistributionFactory.java:133)
... 15 more
编辑2:
附上使用 gradle init
命令实例化新项目的完整日志:
https://pastebin.com/G4xhR3N3
对我有用的解决方法(我有 WSL 2):
- 在您的 Windows 文件系统中创建一个项目文件夹。
- 使用 mklink 和 mklink /D,创建指向 WSL 文件和文件夹的符号链接(我将 WSL 2 文件系统 \wsl$ 安装为我的 L: 驱动器,可能这是一项要求)。 mklink 命令需要 运行 作为管理员(运行 cmd.exe 作为管理员)。示例:“mklink /D src L:\home\john\project\src”。我 sym-linked 的文件列表:
(编辑: git 在 Windows 中的支持side 不适用于这种方法,因为 git 检测符号链接和常规文件之间的差异;但是,您仍然可以在 WSL 上使用 git。.git/ .git忽略 - <符号链接>build.gradle
- <符号链接>settings.gradle
源/
- 注意 .gradle、gradle、gradew、gradlew.bat 和 .idea 没有符号链接。 WSL 应该有自己的 .gradle 和构建文件夹,并且没有 IntelliJ gradle 包装器。
- IntelliJ Gradle 和 WSL gradle 应该可以很好地独立工作。
JetBrains 发布了 2021.1 版 Intellij IDEA,对 WSL 2 提供了更多支持。现在可以使用 Gradle 和 Maven 从 Ubuntu mount 导入项目。 https://blog.jetbrains.com/idea/2021/01/intellij-idea-2021-1-eap-1/