Кажется, я решил немедленные ошибки компиляции, но был бы признателен за более глубокое понимание и не нашел ничего на StackExchange или в Google, сообщение об ошибке, которое кажется непосредственно применимым.

Пользуюсь плагином Android Development Kit для Eclipse всего несколько недель. Я понимаю, что Android использует синтаксис только через Java 1.5, и подозреваю, что это может быть ключом к моей проблеме, которая возникла только после того, как я добавил Debug.startMethodTracing("filename.trace"); и добавил разрешения на использование WRITE_EXTERNAL_STORAGE.

Успешно скомпилировал и запустил простые (привет, мир) приложения, а потом вдруг: бац !!

Новое сообщение об ошибке:

"Build path specifies execution environment JavaSE-1.6. There are no JREs installed in the workspace that are strictly compatible with this environment."

Когда я проверил путь сборки Java для своего приложения:

Right click project name > Properties > Java Build Path > Libraries

Всего четыре элемента: 1) импортированная библиотека jar-файлов (для API) 2) Android 4.4.2 3) зависимости Android 4) частные библиотеки Android.

Кажется, я решил проблему, выполнив следующие инструкции, не относящиеся к Android:

Путь сборки Java

Который, по сути, сказал:

'Add Library" > 'JRE System Library" > "Workspace default JRE (jre7)

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

Другими словами, нормально ли, чтобы JRE была явно указана в разделе библиотек с ADK? Есть ли проблемы с использованием JRE 1.7 вместо более старой версии?

Я также прочитал эти инструкции, но, опять же, ответ не относится к Android: Предупреждение. Путь сборки указывает среду выполнения J2SE-1.4

0
Dell Anderson 31 Дек 2013 в 05:13
1
На самом деле зависит от уровня api, который java 1.5 или 1.6 или теперь 1.7, как api level 8, и beow был java .15, а api 9-18 был java 1.6, а теперь api 19 по большей части является java 1.7.
 – 
Fred Grott
31 Дек 2013 в 06:02

1 ответ

Лучший ответ

Предупреждение информирует вас о том, что у вас нет доступных JDK версии 1.6, даже если ваш код настроен на уровень соответствия 1.6. Практическая ошибка заключается в том, что, поскольку единственная доступная среда выполнения JRE - это среда выполнения 1.7, вы можете использовать какой-нибудь класс или метод, который был добавлен в версии 1.7: ваш код все равно компилируется нормально, но тогда вы получите NoSuchMethodError или например, если он был запущен в среде выполнения 1.6.

С практической точки зрения, поскольку вы ориентируетесь на Android, вам, вероятно, не о чем беспокоиться; ADK все равно перекомпилирует ваш код, и любые такие ошибки должны немедленно появиться. Если вы хотите, чтобы предупреждение исчезло, просто установите 1.6 JDK вместе с 1.7.

1
chrylis -cautiouslyoptimistic- 31 Дек 2013 в 05:16
Спасибо, Крилис, я принял твой ответ. Кажется немного нелогичным, что для опции Eclipse для установки уровня соответствия требуется совершенно другая версия JDK, а не какое-то ограниченное подмножество JDK7. Похоже, что существует достаточная разница между JDK7 и JDK6, чтобы не допускать обратной совместимости (другими словами, 7 - это больше, чем просто расширенный синтаксис).
 – 
Dell Anderson
1 Фев 2014 в 06:42
Уровень соответствия зависит от синтаксиса. Другое отличие - это дополнительный API, добавляемый с каждой версией.
 – 
chrylis -cautiouslyoptimistic-
1 Фев 2014 в 09:41