Что такое ад пути к классу, и это - действительно проблема для Java?

Во-первых, дело не в ConstraintLayout, а в том, как вы реализуете Dialog. Это предложение и согласно Dialog Documentation :

Класс Dialog является базовым классом для диалогов, но вам следует избегать создания экземпляра Dialog напрямую. Вместо этого используйте один из следующих подклассов:

AlertDialog
Диалог, в котором может отображаться заголовок, до трех кнопок, список выбираемых элементов или пользовательский макет. [1115 ]

DatePickerDialog or TimePickerDialog
Диалог с предопределенным пользовательским интерфейсом, который позволяет пользователю выбирать дату или время.

blockquote>

Таким образом, в основном вы будете использовать setView api:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity());
    // Setting my layout here
    builder.setView(R.layout.my_layout);
    builder.setPositiveButton(/* My Methods */)
           .setNegativeButton(/* My Methods */);
    return builder.create();
}

Прочтите об этом в Создание документации пользовательского макета . Если вы хотите больше настроек, создайте собственную тему в values> styles.xml, которую можно использовать во всем приложении, или просто установив ее вместе со сборщиком, например:

new AlertDialog.Builder(requireActivity(), R.style.My_Alert_Dialog_Theme);

22
задан Jonathan Allen 16 December 2008 в 23:44
поделиться

4 ответа

Ад пути к классу является печальным последствием динамического подключения вида, выполненного Java.

Ваша программа не является фиксированным объектом, а скорее точным набором классов, загруженных JVM в конкретном экземпляре.

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

Могли быть различия в стандартных (очень распространенных) библиотеках. Библиотеки могли быть скрыты друг другом (более старая версия может даже использоваться вместо более новой). Структура каталогов могла смешать разрешение. Другая версия того же класса может появиться в нескольких библиотеках, и первый, с которым встречаются, будет использоваться, и т.д. Так как Java, спецификацией, использует сначала встреченную политику, неизвестные зависимости от упорядочивания могут привести к проблемам. Конечно, так как это - командная строка, и это - часть спецификации, нет никаких реальных предупреждений.

Это - очень все еще проблема. Например, на Mac OS ужасная поддержка со стороны Apple означает, что Вы, машина заканчивается с несколькими JVMs и несколькими JREs, и Вы никогда не можете легко poart вещи с места на место. Если у Вас есть несколько библиотек, которые были скомпилированы против определенных но различных версий других библиотек, у Вас могли быть проблемы и т.д.

Однако эта проблема не свойственна от Java. Я помню свою долю ситуаций с адом DLL при программировании окон в 90-х. Любая ситуация, где необходимо рассчитывать на что-то в файловой системе для сборки программы вместо того, чтобы иметь единственный четко определенный исполняемый файл, является проблемой.

Однако преимущества этой модели являются все еще большими, таким образом, я готов терпеть этот ад. Существуют также шаги в правильном направлении на стороне Sun. Например, Java6 позволяет Вам просто указывать каталог с банками, а не иметь для перечисления их.

BTW: Пути к классам являются также проблемой при использовании среды, которая использует classloader не по умолчанию. Например, у меня было много проблем, которые любят рабочие вещи, в спящем режиме или Систематизатор под Eclipse, потому что classloaders были несовместимыми.

32
ответ дан 29 November 2019 в 04:47
поделиться

Classpath/jar-hell имеет несколько аварийных люков, если они имеют смысл для Вашего проекта:

3
ответ дан 29 November 2019 в 04:47
поделиться

Я думаю, что "ад пути к классу" относится ко времени, когда путь к классу приложения Java мог только быть установлен при помощи переменной среды ПУТИ К КЛАССУ. Ведомый ко многим приложениям, требующим изменений в глобальной конфигурации системы (отличающийся для каждой ОС), конфликты версий между приложениями и общий беспорядок.

2
ответ дан 29 November 2019 в 04:47
поделиться

Существует партия хорошего материала здесь http://mindprod.com/jgloss/classpath.html и http://java.sun.com/javase/6/docs/technotes/tools/windows/classpath.html

У меня только были проблемы с путями к классам, когда я не устанавливаю, самостоятельно использует - CP. Попытка выяснить, как Ваше стороннее программное обеспечение устанавливает их пути к классам, может время от времени быть болью.

1
ответ дан 29 November 2019 в 04:47
поделиться
Другие вопросы по тегам:

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