Eclipse забывает библиотеку Java в пути сборки проекта

Сотрудник дал мне второй пакет для приложения Android, над которым я работаю, и в классах есть пара импортов «java.awt» и «javax.swing», которые все были отмечены красным «x».

Eclipse (Mars.2, 4.5.2) уже знает, какие версии Java установлены (Window - Preferences - Java - Installed JREs, рядом с "jdk1.8.0_161" стоит галочка), и я только что проверил, установлена ​​ли переменная среды JAVA_HOME. все еще там (что это). Чтобы решить эту проблему, мне все же пришлось добавить системную библиотеку JRE (1.8.0 v161) в путь сборки проекта.

Фактическая проблема заключается в следующем: каждый раз, когда я перезапускаю Eclipse, красный «x» возвращается, и мне приходится снова добавлять Java.

Как не дать Eclipse забыть о библиотеке?

Изменить: путь к классам для моего проекта говорит:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

person Neph    schedule 16.02.2018    source источник
comment
В пути сборки Java вашего проекта могут быть ограничения доступа к этим пакетам. Что содержит ваш файл .classpath? Кстати Марс.2 устарел. Пожалуйста, перейдите на Oxygen.2.   -  person howlger    schedule 16.02.2018
comment
@howgler Я обновил свой первоначальный пост. Я полностью осознаю, что он устарел, это версия, которая работает с плагинами, которые я должен использовать (например, пользовательская версия ADT).   -  person Neph    schedule 16.02.2018
comment
Классы ни java.awt, ни javax.swing нельзя использовать в приложении для Android. Это не проблема Eclipse или IDE, а ограничение Android (который использует свой собственный инструментарий пользовательского интерфейса). См. список поддерживаемых пакетов JRE здесь: developer.android.com/reference/packages.html   -  person howlger    schedule 16.02.2018
comment
Я не пытаюсь запустить код, который имеет JButtons,... но алгоритм, стоящий за ним, работает просто отлично (уже протестировал его). Единственное, что импортируется в реальный код, который я использую из пакета, — это java.util.ArrayList. Итак, проблема/мой вопрос заключается не в том, почему импорт изначально был помечен как x, а в том, почему Eclipse избавляется от дополнительной библиотеки Java каждый раз, когда я ее перезапускаю, и как я могу заставить ее сохранить ее.   -  person Neph    schedule 19.02.2018
comment
Это то, что вы ищете: в Project › Properties: Java Build Path, вкладка Libraries нажмите Add Library... и выберите Системная библиотека JRE?   -  person howlger    schedule 19.02.2018
comment
Это именно то, что я сделал (проверьте первый пост, пожалуйста), и это также то, что я должен делать каждый раз, когда я перезапускаю Eclipse, потому что он каким-то образом избавляется от добавленной мной библиотеки Java.   -  person Neph    schedule 19.02.2018
comment
Обычный JRE и Android противоречивы. Имеет ли узел Android подузел Правила доступа? Если нет, попробуйте добавить JRE/JDK lib/rt.jar через Добавить внешние JAR-файлы... в путь сборки Java.   -  person howlger    schedule 19.02.2018
comment
Ах, файл rt.jar, который он помнит после перезапуска Eclipse. Спасибо! Еще не перезагружал весь компьютер, но я буду держать вас в курсе, если он все еще будет работать после этого, чтобы вы могли создать сообщение с ответом.   -  person Neph    schedule 19.02.2018


Ответы (1)


Ни java.awt, ни javax.swing не являются частью Android API (поскольку Android использует собственный инструментарий пользовательского интерфейса ). Вы можете добавить JRE/JDK lib/rt.jar через Добавить внешние JAR-файлы... в свой путь сборки Java, но это грязный трюк.

person howlger    schedule 19.02.2018