3

Существует странная проблема, о которой я не уверен в ее источнике.Intellij IDEA перезаписывает символ «i» с помощью ASCII «ı» в файле gradle-wrapper.properties

Я использую Intellij IDEA (2016 3.3) и Gradle (v3.3). Я использую Windows 10, турецкую ОС.

Gradle имеет файл свойств оболочки. (./gradle/wrapper/gradle-wrapper.properties)

Содержание этого файла, который генерируется Gradle:

distributionBase=GRADLE_USER_HOME 
distributionPath=wrapper/dists 
zipStoreBase=GRADLE_USER_HOME 
zipStorePath=wrapper/dists 
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-bin.zip 

Когда я открываю проект Gradle в Intellij, последнюю строку, которая файл превращается в это:

distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-b\u0131n.zip 

Intellij перезаписывает bin в b\u0131n. Я проверил, к чему относится \u0131, и это код ASCII для буквы «ı».

И поскольку URL-адрес поврежден, я не могу построить проект.

В этом файле есть много букв «i» (не говоря уже о целом проекте), но каким-то образом Intellij превращает это «i» в «bin» в ASCI «ı».

У меня эта проблема надолго, но в первый раз Intellij настаивает на перезаписи, когда я пытаюсь исправить письмо вручную. Единственная разница на этот раз в том, что я создал проект с несколькими модулями, что означает, что существует более одного файла gradle-wrapper.properties.

Вы знаете, почему и как это решить?

+0

Является ли «bın» обычным турецким словом и является какой-то коррекцией правописания? – CodeCaster

+0

@CodeCaster хорошая точка, но нет, 'bın' не является значимым словом на турецком языке. Но «нет» - это турецкое письмо. –

+0

Я [сообщил об ошибке] (https://youtrack.jetbrains.com/issue/IDEA-168145) в журнале отслеживания проблем IntelliJ IDEA. Это поможет, если вы можете приложить образец проекта, чтобы воспроизвести его. Помогает ли вам [переключиться на UTF-8 везде] (http://blogs.jetbrains.com/idea/2013/03/use-the-utf-8-luke-file-encodings-in-intellij-idea/)? Помогает ли вам добавить '-Dfile.encoding = UTF-8' и' -Duser.language = en' в [.vmoptions] (https://intellij-support.jetbrains.com/hc/articles/206544869)? – CrazyCoder

ответ

4

После некоторого исследования я обнаружил происхождение ошибки, и это не Intellij IDEA, а Gradle.

@Input 
    public String getDistributionUrl() { 
     if (distributionUrl != null) { 
      return distributionUrl; 
     } else if (gradleVersion != null) { 
      return locator.getDistributionFor(gradleVersion, distributionType.name().toLowerCase()).toString(); 
     } else { 
      return null; 
     } 
    } 

https://github.com/gradle/gradle/blob/master/subprojects/build-init/src/main/groovy/org/gradle/api/tasks/wrapper/Wrapper.java#L314

toLowerCase() метод здесь использует мой локаль (TR-TR), поэтому выход "БИН" .toLowerCase() является "БИН".

Я добавил issue в группу Gradle-dev Google и предложил решение.

1

В build.gradle, добавление;

task wrapper(type: Wrapper) { 
    gradleVersion = '3.3' 
    distributionUrl = "https://services.gradle.org/distributions/gradle-${gradleVersion}-all.zip" 
} 

решил это для меня.

Проверьте, пожалуйста, here.

+0

Спасибо за ответ, но это уже не нужно. Эта ошибка, о которой я упоминал, была исправлена ​​мной, и исправление включено сейчас в последнюю версию Gradle. –