Несколько .class файлов сгенерированы для класса?

У меня есть эта проблема в моей OS X El Capitan.

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

Наконец-то понял, что использование настройки виртуального питона вызывает проблемы. Таким образом, удаление с

pip install virtualenv virtualenvwrapper

Затем запустил

brew link opencv

, который выдает ошибки.

А затем следуйте приведенным ниже шагам, чтобы решить проблему.

Первый запуск

brew link opencv

Если выдается ошибка, попробуйте автоматическую диагностику.

brew doctor

brew doctor выдает список проблем, которые могут привести к ошибкам при установке. процесс.

Чтобы исправить проблемы в случае конфликтующих файлов, запустите, чтобы получить список всех действий, которые будут выполнены путем перезаписи без фактического их выполнения.

Чтобы отобразить список всех файлов, которые будут удалены:

  brew link --overwrite --dry-run opencv

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

Для принудительной установки ссылки и перезаписи всех конфликтующих файлов:

 brew link --overwrite opencv

Этот учебник является более простой альтернативой.

15
задан Ariod 23 June 2009 в 11:22
поделиться

5 ответов

Они предназначены для внутренних классов и статических вложенных классов . Классы с номерами являются анонимными внутренними классами.

Например:


class Foo {
   class Bar { }
   static class Baz { }
   void run() {
      Helper t = new Helper() {
         int helpMethod() {
            return 2;
         }
      };
    }
}

Это создаст файлы классов Foo.class , Foo $ Bar.class , Foo $ Baz.class и Foo $ 1.class (для реализации интерфейса Helper )

27
ответ дан 1 December 2019 в 01:23
поделиться

Вы получаете больше файлов .class из одного исходного файла, если

  • класс содержит внутренние классы или статические внутренние классы. Внутренние классы могут гнездиться. Их имена: <имя внешнего класса> $ <имя внутреннего класса> .

  • внутренние интерфейсы, которые всегда статичны.

  • анонимные внутренние классы (которые на самом деле являются простыми внутренними классами без имени)

  • интерфейсы и классы доступа к пакетам до и после вашего основного класса. Вы можете иметь произвольное количество классов и интерфейсов доступа к пакетам в одном исходном файле Java. Обычно небольшие вспомогательные объекты, которые используются только классом, просто помещаются в один и тот же файл.

5
ответ дан 1 December 2019 в 01:23
поделиться

Каждый класс в java принадлежит к .java-файлу, но .java-файл может содержать несколько классов. Это включает внутренние и анонимные классы. Файлы .class, созданные для внутренних классов, содержат в своем имени символ «$». Анонимные внутренние классы получают числа.

2
ответ дан 1 December 2019 в 01:23
поделиться

Один исходный файл java может генерировать несколько файлов классов, если ваш класс содержит внутренние классы. Анонимные внутренние классы представлены вашими пронумерованными файлами классов.

4
ответ дан 1 December 2019 в 01:23
поделиться

При компиляции будет создано несколько классов, только если у вашего класса есть внутренний класс.

см .: Почему код Java с внутренним классом генерирует третий файл SomeClass $ 1.class?

-2
ответ дан 1 December 2019 в 01:23
поделиться
Другие вопросы по тегам:

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