gradle - 如何使用带有 WSL2 项目的 Intellij IDEA 设置 gradle?

标签 gradle intellij-idea windows-subsystem-for-linux

我在 ubuntu wsl 中克隆了一个项目\\wsl$\Ubuntu\home\username\project .在 Intellij IDEA Ultimate 2020.1.3 中打开它并尝试导入为 gradle 项目,但我收到无信息的错误消息:enter image description here
这是我在 IDEA 中的 gradle 配置:
enter image description here
问题是我应该如何在 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$0(DefaultAsyncConsumerActionExecutor.java:62)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.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
EDIT2:
gradle init 附加实例化新项目的完整日志命令:
https://pastebin.com/G4xhR3N3

最佳答案

在我的情况下有用的解决方法(我有 WSL 2):

  • 在 Windows 文件系统中创建一个项目文件夹。
  • 使用 mklink 和 mklink/D,创建指向您的 WSL 文件和文件夹的符号链接(symbolic link)(我有 WSL 2 文件系统\wsl$,作为我的 L: 驱动器安装,可能这是一个要求)。 mklink 命令需要以管理员身份运行(以管理员身份运行 cmd.exe)。示例:“mklink/D src L:\home\john\project\src”。我符号链接(symbolic link)的文件列表:
  • .git/( 编辑: Windows 端的 git 支持不适用于这种方法,因为 git 会检测符号链接(symbolic link)和常规文件之间的差异;但是,您仍然可以在 WSL 上使用 git)。
  • .gitignore
  • build.gradle
  • settings.gradle
  • src/

  • 注意 .gradle、gradle、gradew、gradlew.bat 和 .idea 没有符号链接(symbolic link)。 WSL 应该有自己的 .gradle 和 build 文件夹,并且没有 IntelliJ gradle 包装器。
  • IntelliJ Gradle 和 WSL gradle 应该以这种方式独立工作。
  • 关于gradle - 如何使用带有 WSL2 项目的 Intellij IDEA 设置 gradle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62936379/

    相关文章:

    java - intellij下的单元测试

    Windows Bash 和 Visual Studio Code : How can I launch bash as a run task?

    spring-boot - 使用gradle将Zip文件上传到nexus

    gradle - 将文件夹添加到 srcDir 除了 gradle 中的一个文件

    java - 如何在 Android Studio IDE 中找到我项目中所有未使用的方法?

    java - 如何在 IntelliJ IDEA 中为 Hadoop 程序设置 multi-reducer?

    powershell - 如何更改 Windows 控制台 CMD 或 WSL 中的键盘布局?

    git repo 提供了来自 WSL 的矛盾信息而不是标准 Windows

    android - 杰森塞里亚尔

    jenkins - Jenkins Gradle失败,无法将缓存值写入 '/home/bldadm/.gradle/daemon/4.8/registry.bin'