Ошибка: не удалось найти org.jetbrains.kotlin: kotlin-stdlib-jdk8: 1.3.60-eap-25 в Ionic 3

Вот пример использования контроллера, введенного Guice.

/**
 * Loads a FXML file and injects its controller from the given Guice {@code Provider}
 */
public abstract class GuiceFxmlLoader {

   public GuiceFxmlLoader(Stage stage, Provider<?> provider) {
      mStage = Objects.requireNonNull(stage);
      mProvider = Objects.requireNonNull(provider);
   }

   /**
    * @return the FXML file name
    */
   public abstract String getFileName();

   /**
    * Load FXML, set its controller with given {@code Provider}, and add it to {@code Stage}.
    */
   public void loadView() {
      try {
         FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource(getFileName()));
         loader.setControllerFactory(p -> mProvider.get());
         Node view = loader.load();
         setViewInStage(view);
      }
      catch (IOException ex) {
         LOGGER.error("Failed to load FXML: " + getFileName(), ex);
      }
   }

   private void setViewInStage(Node view) {
      BorderPane pane = (BorderPane)mStage.getScene().getRoot();
      pane.setCenter(view);
   }

   private static final Logger LOGGER = Logger.getLogger(GuiceFxmlLoader.class);

   private final Stage mStage;
   private final Provider<?> mProvider;
}

Вот конкретная реализация загрузчика:

public class ConcreteViewLoader extends GuiceFxmlLoader {

   @Inject
   public ConcreteViewLoader(Stage stage, Provider<MyController> provider) {
      super(stage, provider);
   }

   @Override
   public String getFileName() {
      return "my_view.fxml";
   }
}

Обратите внимание, что этот пример загружает представление в центр BoarderPane, который является корнем сцены в рабочей области. Это не относится к примеру (деталь реализации моего конкретного варианта использования), но решил оставить его, поскольку некоторые из них могут оказаться полезными.

69
задан Laurel 24 October 2019 в 21:45
поделиться

8 ответов

Проблема заключается в cordova-support-google-services плагин для Cordova.

Этот плагин build.gradle похож на это с сегодняшнего дня (24-го октября 2019):

dependencies {
    classpath 'com.android.tools.build:gradle:+'
    classpath 'com.google.gms:google-services:4.2.0'
}

более точно проблема заключается в этой зависимости:

classpath 'com.android.tools.build:gradle:+'

, Который является чрезвычайно хрупким способом определить зависимости. '+' знак здесь означает, "выбирают новую версию, доступную в repo". Если более новая версия публикуется в repo, и это повреждает сборку, то всем с этим плагином повредили их проекты. Сегодня это произошло. Поврежденная версия, которая выбирается, com.android.tools.build:gradle:4.0.0. Требуется некоторый материал Kotlin.

Именно поэтому необходимо ВСЕГДА замораживать зависимости для надежного разрабатывания проекта. Никогда не доверяйте более новому материалу. Эти компиляции зависимости, прекрасные, как это вчера сделало:

classpath 'com.android.tools.build:gradle:3.5.1'

Для тех, которые используют Cordova или ионический диалект, можно сделать быстрое исправление, чтобы быть в состоянии разработать проект путем замораживания зависимости в файле:

<projectroot>/platforms/android/cordova-support-google-services/<project>-build.gradle

Это не категорическое решение все же. При переустановке платформы андроида через Cordova, ошибка обнаружится снова. Специалист по обслуживанию проекта должен или заморозить зависимость или зафиксировать ее для поддержки gradle 4.0.0. Тем временем просто используйте фиксированное ветвление этого плагина.

74
ответ дан 24 November 2019 в 10:13
поделиться

Вот решение.

проблемой был точно репозиторий знатока ( здесь ), но проблема была с build.gradle от плагин cordova-support-google-services, таким образом, я добавил необходимую строку, и все в порядке теперь, я уже создал запрос получения по запросу к исходному repo ( здесь ). Но тем временем можно сделать то, что я сделал, просто замените в package.json текущий versiГіn с моим repo:

Прежде:

...
"cordova-support-google-services": "^1.3.1",
...

После:

...
"cordova-support-google-services": "https://github.com/LuisEGR/cordova-support-google-services.git",
...

после этого Вы будете иметь к:

  • папки Remove платформы и плагины
  • работают npm install

, Это - временное решение, в то время как запрос получения по запросу к основному repo принят, и npm пакет обновил

и вот именно, теперь можно разработать проект снова.

<час>

я использую ионические 4, и некоторые плагины требуют cordova-support-google-services, в случае, если у Вас нет его в Вашем package.json, ошибка могла быть с другим плагином, раз так добавьте package.json, таким образом, мы можем узнать, какой является проблемой.

<час>

ОБНОВЛЕНИЕ 24/ОКТЯБРЬ:

я изменил решение в своем repo как многие из Вас предложенный, теперь решение consinst только в фиксации зависимости: от: com.android.tools.build:gradle: + к пути к классу com.android.tools.build:gradle:3. + , это уже находится в моем repo, если Вы хотите видеть , что изменилось

29
ответ дан 24 November 2019 в 10:13
поделиться

РЕДАКТИРОВАНИЕ 28.10.19:

cordova-support-google-services был обновлен сегодня к версии 1.3.2, которая изменяет путь к классу от classpath 'com.android.tools.build:gradle:+'

к

classpath 'com.android.tools.build:gradle:3.+'

, который, кажется, фиксирует kotlin ошибку

Исходный Ответ

, я заставил мой создавать успешно путем выполнения следующего:

я отредактировал платформы-> андроид-> cordova-support-google-services-> myAppName-build.gradle

и изменился

maventCentral()

к [1 116]

    maven { url "https://maven.google.com" }
    maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }

, Который решил kotlin ошибку тогда, я получал другую ошибку, которую я разрешил путем изменения

classpath 'com.google.gms:google-services:4.2.0'

к [1 118]

classpath 'com.google.gms:google-services:4.1.0'

, Это тогда создало успешно.

29
ответ дан 24 November 2019 в 10:13
поделиться

Как дальнейшее временное приспособление к продолжению на предложение от @MisterSmith, используйте рычаг, чтобы повторно применить блокировку:

<hook src="scripts/fix_android_dep.sh" type="after_platform_add"/>

с этим чрезмерно многословным кодом удара:

#!/usr/bin/env bash

## temporary fix for android studio EAP issue
## SOURCE: https://stackoverflow.com/a/58536638/56545
if [ -d "platforms/android/cordova-support-google-services" ]; then
  file="platforms/android/cordova-support-google-services/app-build.gradle"
  from="classpath 'com.android.tools.build:gradle:+'"
  to="classpath 'com.android.tools.build:gradle:3.5.1'"

  change=`sed "s/$from/$to/" < "$file"`
  echo "$change" > "$file"
fi
5
ответ дан 24 November 2019 в 10:13
поделиться

Решение для ионного v3 и решение cordova

@Mister Smith решили мою проблему

, необходимо перейти к файлу

platforms/android/cordova-support-google-services

тогда

Замена

classpath 'com.android.tools.build:gradle:+'

[1 110]

classpath 'com.android.tools.build:gradle:3.5.1'

@Alternative решение, которое я нашел, к [1 111]

setup kotlin in your system :)
7
ответ дан 24 November 2019 в 10:13
поделиться

в моем проекте я фиксирую как это. (мой проект в kotlin)

buildscript{

    repositories {
         google()
         jcenter()
         ......
         maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
    }

}

allprojects {
    repositories {
         google()
         jcenter()
         ......
         maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
   }
}
5
ответ дан 24 November 2019 в 10:13
поделиться

Ни одно из вышеупомянутого не работало на меня. Я закончил тем, что удалил плагин сервисов Google, и добавьте его.

cordova plugin rm cordova-support-google-services cordova plugin add cordova-support-google-services

2
ответ дан 24 November 2019 в 10:13
поделиться

Я должен был добавить maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' } и на верхний уровень build.gradle и на app модуль build.gradle. В обоих случаях и в buildscripts.repositories и в allprojects.repositories

2
ответ дан 24 November 2019 в 10:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: