react-native studio - Не удалось найти tools.jar React Native Android В Windows 10




installation java (9)

У меня была такая же проблема, когда я запускал run-android-run-native, и это дало мне ошибку tool.jar не найден. Я решил это, добавив одну строку, указанную ниже, в файле gradle.properties, который находится в проекте android. org.gradle.java.home = C: \ Program Files \ Java \ jdk1.8.0_121

ребята. Я просто пытаюсь установить реакцию на свой ноутбук. Я следил за инструкциями по установке, но я все равно получаю эту ошибку.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Could not find tools.jar

Я использовал genymotion с os версии 5.1.0, у меня есть настройка переменной среды для android_home. Любая идея, что я пропустил здесь?


Я знаю, что этот вопрос относится к Windows, но это первый результат этой ошибки в Google, поэтому для Linux эта проблема может быть устранена с помощью:

sudo apt install default-jdk


Настройка JDK (не JRE. JRE не имеет tools.jar ) версии (например, JDK 1.7x), поскольку JAVA_HOME разрешит эту проблему.

Пожалуйста, проверьте переменные среды вашего компьютера и установите JAVA_HOME если он еще не был настроен.


Я собираюсь сделать длинный выстрел здесь. В папке java libs есть tools.jar. [Java sdk is]

Обычно у всех этих фреймворков и ides есть папка lib. и в нем отсутствуют указанные tools.jar. Просто скопируйте его там.


Если у вас встроенный JDK для Android Studio, это может вызвать конфликты. Обходной путь для этой проблемы, который я нашел, - это установить JAVA_HOME в местоположение JDK по умолчанию, указанное в Android Studio.

  1. Открыть Android Studio
  2. Нажмите Ctrl + Alt + Shift + S, чтобы открыть окно «Структура проекта».
  3. Установите переменную среды JAVA_HOME в путь, указанный в разделе «Местоположение JDK».

Если эта проблема возникает для Windows, то решение здесь довольно просто.

Установите Chocolatey

Установить jdk8

Перезапустите командную строку или Powershell в качестве администратора и запустите:

choco install jdk8

Теперь, если вы запустите

react-native run-android

Эта ошибка не должна отображаться.


Установка отсутствующей переменной системной среды JAVA_HOME работала для меня.

  • Нажмите WIN + Pause на клавиатуре.
  • Нажмите расширенные системные настройки.
  • Нажмите «Переменные среды».
  • Нажмите «Создать» в разделе «Системные переменные».
  • Введите «JAVA_HOME» в поле « Имя переменной» .
  • Введите путь к JDK в поле Значение . Для меня правильный путь с коротким именем файла был «C: \ PROGRA ~ 1 \ Java \ jdk1.8.0_66». Ваш путь будет зависеть от установленной версии.
  • Нажмите «ОК» и «ОК» в предыдущем окне.
  • Перезапустите любые приглашения командной строки или перезагрузите компьютер.
  • react-native run-android .

Просто добавьте еще один пункт данных для людей, вытягивающих волосы. Я думаю, что обновление java, возможно, испортило мою среду, которая отлично работала 2 месяца назад. Сочетание того, что сработало для меня:

Установите JAVA_HOME в 1.7 , а не 1.8 .

У меня было 2 версии 1.8, и ни одна из них не работала.


Я предполагаю, что LoginComponent и MenuComponent используются отдельно, например, в LoginActivity и MenuActivity . Каждый компонент встроен в Activity.onCreate . Если это так, компоненты воссоздаются каждый раз, когда создается новая активность, модули и зависимости, независимо от того, с какой областью они связаны. Поэтому каждый раз вы получаете новые экземпляры MainProvider и AccountManager .

MenuActivity и LoginActivity имеют отдельные livecycles, поэтому зависимости от MailModule не могут быть одноточечными в обоих из них. Вам нужно объявить корневой компонент с областью @Singleton (например, в подклассе Application), MenuComponent LoginComponent зависеть от параметров MenuComponent и LoginComponent . Компонент уровня активности не может быть @Singleton области, лучше создавать свои собственные области с @Scope аннотации @Scope , например:

@Retention(RetentionPolicy.RUNTIME)
@Scope
public @interface MenuScope {
}

Или вы можете оставить их без доступа.

Что касается областей, то здесь кратко из первоначального предложения Кинжал 2 :

@Singleton
@Component(modules = {…})
public interface ApplicationComponent {}

Это объявление позволяет кинжалу применять следующие ограничения:

  • У данного компонента могут быть только привязки (включая аннотации объектов по классам), которые являются не областями или объявленной областью. Т.е. компонент не может представлять две области. Если область не указана, привязки могут быть недоступны.
  • Компонент с областью может иметь только одну зависимую область. Это механизм, который обеспечивает, чтобы два компонента не объявляли свои собственные привязки с привязкой. Например, два компонента Singleton, каждый из которых имеет свой собственный кеш @Singleton, будут разбиты.
  • Объем компонента не должен появляться ни в одной из его транзитивных зависимостей. Например: SessionScoped -> RequestScoped -> SessionScoped не имеет никакого смысла и является ошибкой.
  • @Singleton обрабатывается специально в том смысле, что он не может иметь никаких зависимых областей. Все ожидают, что Синглтон станет «корнем».

Цель этой комбинации правил состоит в том, чтобы обеспечить, чтобы при применении области применения компоненты составлялись с той же структурой, что и у нас с Dagger 1.0 plus () 'd ObjectGraphs, но с возможностью иметь статические знания обо всех привязок и их областей. Другими словами, когда применяются области применения, это ограничивает графики, чем может быть построено только для тех, которые могут быть правильно построены.

Из моей собственной практики яснее не использовать @Singleton вообще. Вместо этого я использую @ApplicationScope . Он служит для определения одиночных чисел в целом приложении и не имеет дополнительных ограничений, как @Singleton .

Надеюсь, что это поможет вам :). Это довольно сложно понять быстро, требует времени, для меня, по крайней мере, это было.





android react-native