JavaFX на Android — Gradle не может найти JDK

Я пытаюсь запустить приложения JavaFX на Android с помощью SDK Dalvik JavaFX-Android (предоставленного группой портирования JavaFX Android). Поэтому я загрузил образцы, предоставленные командой портирования JavaFX для Android, и без особого успеха пытался запустить один из них на Android.

Используя Eclipse с плагином Gradle, я импортировал образец проекта «HelloWorldFxml». Затем я запустил задачу Gradle «./gradlew androidInstall» в проекте, как сказал мне файл README. Но, к сожалению, задача не может быть выполнена, потому что Gradle не может найти мой JDK:


(источник: forumbilder.se )

Несмотря на то, что моя системная переменная JAVA_HOME установлена ​​правильно, и раньше у меня не было с ней проблем:


(источник: forumbilder.se )

Кто-нибудь, кто может дать некоторое представление о том, как я могу это исправить?

Версии: Eclipse Luna Service Release 1a (4.4.1), Gradle 2.2, dalvik-sdk-8u40-ea3, Android SDK Build-tools 21.1.2, Android SDK Tools 24.0.2

Изменить: вывод консоли при запуске «gradlew androidinstall» в примере проекта:

введите здесь описание изображения


person Just some guy    schedule 17.02.2015    source источник


Ответы (4)


Несмотря на то, что в сообщении об ошибке это не указано, может быть, он ищет javac в вашем PATH? Если его там нет, попробуйте добавить ;%JAVA_HOME%\bin в конец вашей переменной PATH (и после этого перезапустите Eclipse, у меня была проблема с запущенными процессами, которые раньше не получали изменений в переменных среды).

person kjosh    schedule 17.02.2015
comment
Не повезло там, к сожалению. - person Just some guy; 18.02.2015

Проверьте настройку Java в Eclipse:

Window -> Preferences
Java -> Installed JREs

Убедитесь, что ваш JDK 1.8 указан там. Если это не так, добавьте его с помощью кнопки Add....

Как только JDK станет известен Eclipse, убедитесь, что настройки вашего проекта используют этот JDK в качестве компилятора, и подключаемый модуль Gradle должен иметь возможность выбрать оттуда настройку.

В крайнем случае вы также сможете запустить Gradle из командной строки, и он должен работать нормально, поскольку вы уже установили переменную %JAVA_HOME%.

person Jolta    schedule 17.02.2015
comment
Вы имеете в виду JRE, верно? Я не думаю, что вы можете перечислить свой JDK среди установленных JRE в Eclipse. Но в любом случае сегодня Gradle принимает мою переменную JAVA_HOME, и я могу успешно выполнить задачу в Eclipse, хотя я не менял ее со вчерашнего дня. Но если я попытаюсь выполнить ту же задачу из командной строки, мне придется удалить часть ;%JAVA_HOME%\bin, иначе он утверждает, что JAVA_HOME установлен в недопустимый каталог. Это довольно запутанно. - person Just some guy; 18.02.2015
comment
Я перечислил свой JDK среди установленных JRE в Eclipse, поэтому я уверен, что это можно сделать. знак равно - person Jolta; 18.02.2015

Основное примечание

С момента выпуска dalvik-sdk-8u40-ea3 и за очень короткое время команда JavaFXPorts выпустила несколько новых версий, все они упрощают весь процесс переноса приложения JavaFX на Android или iOS.

Они выпустили dalvik-sdk-8u40-ea4 и объявили о выпуске нового плагина, который упростит до минимума шаги по созданию мобильного приложения из JavaFX.

Хотя этот ответ может не помочь ОП в его конкретной проблеме, он определенно поможет ему и другим, поскольку все действительно упрощено.

Новый подход

С помощью этого плагина появился новый способ создания приложения HelloWorldFxml для Android.

Новый плагин javafxmobile позволяет создавать apk с помощью одного файла build.gradle.

Вы можете найти этот и другие базовые примеры здесь и скачать репозиторий здесь.

Вам не нужно будет редактировать ни одной строки, просто введите это в командной строке, в корне образца, с подключенным устройством:

gradlew androidInstall

Как и в предыдущих выпусках, вам потребуются установленные JDK8u40 и Android SDK. Однако dalvik-sdk не нужен, он извлекается плагином.

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

person José Pereda    schedule 17.02.2015
comment
Я не уверен, что это отвечает на вопрос - может быть, вы можете уточнить, почему вы так думаете? - person Jolta; 18.02.2015
comment
@Jolta Отредактировал мой ответ. Многие проблемы из предыдущих выпусков решаются с помощью этого нового плагина, как я уже проверил на себе. - person José Pereda; 18.02.2015
comment
Этот новый подход похож на то, что я делаю, просто загружаю образец, а затем запускаю на нем задачу gradlew androidinstall. Сейчас он работает, но только в Eclipse и не использует командную строку, как я упоминал в другом комментарии. Следующее, что я хочу сделать сейчас, это создать свои собственные проекты JavaFX Gradle; должен ли я скопировать свой код в пример проекта или как мне это сделать? Да, я не очень разбираюсь в этих вещах, и я не нашел много документации или руководств. - person Just some guy; 18.02.2015
comment
Удалось ли вам собрать/установить apk? Если вы запускаете из Eclipse, вы используете настольную версию. Вам нужно сделать это из командной строки, чтобы вы могли собрать и установить apk. Как только вы это сделаете, вы можете создавать свои собственные образцы. Сначала предлагаю вам модифицировать код одного из них, а потом попробовать самому. Это зависит от плагина Gradle для IDE... - person José Pereda; 18.02.2015
comment
Я подключаю свой телефон, запускаю задачу androidinstall, и приложение устанавливается на мой телефон. Это эквивалентно сборке/установке apk? - person Just some guy; 18.02.2015
comment
Да, сначала встраивается в вашу систему со всеми установленными вами инструментами, и, наконец, переносится на устройство. Если приложение также работает нормально, это означает, что вы успешно завершили весь процесс. - person José Pereda; 18.02.2015
comment
Теперь я попытался импортировать еще один пример проекта в Eclipse и запустить на нем задачу androidinstall, и это дает мне ту же ошибку, которую я разместил выше. Итак, теперь у меня есть два примера проектов в Eclipse, и один из них работает нормально, когда я пытаюсь установить его на свой телефон, а другой не может найти свой JDK. Что творится? :( - person Just some guy; 18.02.2015
comment
Я не могу сказать без дополнительных подробностей. Не могли бы вы выложить логи консоли при запуске задачи из командной строки? - person José Pereda; 18.02.2015

У меня тоже была эта проблема.
Мои свойства:

-Windows 7
-Dalvik SDK (dalvik-sdk-8u60-b5)
-JDK 8 (последняя версия 8_60 / ВАЖНО: JDK не JRE)
-И я тоже пробовал проект HelloAndroid, предоставленный загружаемым пакетом Dalvik-SDK.


Итак, я запускаю командную строку: gradlew installDebug
Моя проблема была почти такой же. «Не удалось найти JDK. Убедитесь, что существует системная переменная JAVA_HOME или JAVA8_HOME».

#1
Создал эти свойства. Как описано в этом сообщении:
Как установить java_home в Windows 7?
Итак, чтобы убедиться, что я создал оба с одним и тем же путем. Потому что я точно не знаю, какой из них используется gradle.

#2
Это действительно лайфхак, который мне помогает. Нашел это также в StackOverflow. Напишите в файле build.gradle под android{..} материалом следующую строку:

  retrolambda {
     jdk 'C:/Program Files/Java/jdk1.8.0_60'              //<--your JDK-path
  }

выглядит так


Затем снова выполните ту же командную строку, и у меня это сработало. Я думаю, что только 2 шага были решением, потому что я думаю, что gradle не ищет переменную, если есть прямой путь к jdk.

person Lorenzo_Matterhorn    schedule 13.10.2015
comment
@Peanut Читайте внимательнее, это полный ответ, а не новый вопрос, поскольку он представляет решение, которое сработало для автора. - person runDOSrun; 13.10.2015
comment
Лоренцо, то, как вы сформулировали свой ответ, звучит так, как будто у меня есть эта проблема, тоже комментарий, и ваш ответ помечен и отображается в очереди низкого качества. Пожалуйста, подумайте о том, чтобы изменить формулировку вашего ответа, чтобы он более прямо отвечал на вопрос ОП. (например, вместо того, чтобы у меня тоже была эта проблема, я исправил ее так, скажите что-то вроде того, что вы можете решить свою проблему, выполнив это) - person azurefrog; 13.10.2015
comment
спасибо @runDOSrun, потому что это должен быть ответ, а не вопрос. Я решил проблему в своей ситуации. - person Lorenzo_Matterhorn; 13.10.2015