Разное

Невозможно использовать связывание и внедрение объектов: Не удается использовать ошибку связывания и внедрения объектов в Excel 2016 для Mac — Office

Содержание

Приложению Excel не удалось вставить данные, 100% решение

Обновлено 20.03.2021

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов рунета Pyatilistnik.org. В прошлый раз мы с вами разобрали «Почему не работает предварительный просмотр файлов Excel». Двигаемся дальше и в сегодняшней публикации мы разберем такую проблему, при попытке скопировать ячейку Ecxel и вставить ее в другое место  у вас выскакивает окно в ошибкой «Приложению Microsoft Excel не удалось вставить данные«. Давайте это устранять.

Постановка задачи

И так у меня есть виртуальная машина ESXI с гостевой операционной системой Windows Server 2019. Один из сотрудников обратился с проблемой, что у него перестало в Ecxel копироваться содержимое ячеек в другие ячейки. Выглядело это вот так. Сначала при открытии Ecxel 2016 появлялась ошибка:

Невозможно использовать связывание и внедрение объектов (cannot use object linking and embedding)

Далее если попытаться скопировать одну ячейку в другую:

Приложению Microsoft Excel не удалось вставить данные (Microsoft Excel was unable to insert data)

Хочу отметить, что такое поведение было и в совершенно новых документах, которые были созданы для тестирования, так же под эту ошибку попадали ячейки в которых вообще не было данных (пусты).

Что сделать если не удается копировать и вставлять данные на листе

Первое, что вы должны сделать, это обязательно установить все имеющиеся обновления для Microsoft Office, напоминаю делается это через параметры Windows, раздел «Обновление и Безопасность«.

Далее перейдите в дополнительные параметры.

Убедитесь, что установлена галка «При обновлении Windows предоставить обновления для других продуктов Microsoft«

Если Windows что-то обнаружит в списке доступных обновления, то будет произведена установка. Не забываем на всякий случай перезагрузить компьютер или сервер.

Отключение надстроек в безопасном режиме

У Microsoft Excel есть как и у Windows безопасный режим, который позволяет проверить работу приложения с минимальными настройками. Для того, чтобы вам запустить Excel в безопасном режиме, нужно зажать клавишу CTRL и запустить само приложение.

Далее вам нужно перейти в меню «Файл«.

Далее переходим в параметры.

Переходим в пункт «Надстройки«. Посмотрите какие из них у вас находятся в активном состоянии и по очереди отключайте. Проверьте помогло ли это решить ошибку «Невозможно использовать связывание и внедрение объектов (cannot use object linking and embedding)».

Восстановление Microsoft Office

Следующий метод, который может помочь в устранении ошибки «Приложению Microsoft Excel не удалось вставить данные (Microsoft Excel was unable to insert data)», это попробовать произвести восстановление офисного пакета. Чтобы это осуществить, вам необходим вызвать окно выполнить и вписать в нем:

appwiz.cpl

В открывшемся окне «Программы и компоненты» вам необходимо выбрать в списке ваш офисный пакет, у меня это «Microsoft Office профессиональный плюс 2016» и в самом верху нажать кнопку «Изменить«.

В списке доступных операций, выберите «Восстановить«.

Начинается процесс восстановления Microsoft Office и в том числе его пакета Excel. Данная операция может быть не такой быстрой, поэтому придется подождать минут 5-10.

Проверка учетной записи в DCOM

Ранее я вам рассказывал, как производится настройка DCOM для  Exel, кото не читал посмотрите. DCOM — это программная конструкция, которая позволяет компьютеру запускать программы по сети на другом компьютере, как если бы программа выполнялась локально. DCOM — это аббревиатура от Distributed Component Object Model. Если вы получаете ошибку  «Невозможно использовать связывание и внедрение объектов (cannot use object linking and embedding)», то с большой долей вероятности у вас используется для запуска не тот режим. Чтобы это проверить, вновь вызовите окно выполнить и введите:

dcomcnfg

Откройте «Службы компонентов — Компьютеры — Приложения COM+ — Настройка DCOM — Microsoft Excel Application (Component Services — Computers — My computer — DCOM Config — Microsoft Excel Application)». Щелкните правым кликом по «Microsoft Excel Application» и перейдите в его свойства.

Перейдите на вкладку «Удостоверение (Identity)» и удостоверьтесь, что у вас выставлен пункт «Запускающий пользователь (The launching user)«.

У меня же было как раз в другом режиме, и запуск был от конкретного пользователя.

Как только я выставил правильные настройки у меня заработала вставка содержимого ячеек Exel и ошибка  «Приложению Microsoft Excel не удалось вставить данные (Microsoft Excel was unable to insert data)» исчезла.

Очистка временных файлов

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

C:\Users\имя пользователя\AppData\Roaming\Microsoft\Excel

Не забудьте только выбрать своего пользователя. В результате у вас появится папка XLSTART или еще какие-то, попробуйте их вырезать или удалить. После чего запустите Microsoft Excel и проверьте, дало ли это эффект.

P.S.

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

 

На этом у меня все, мы с вами научились чинить вставку и копирование данных из ячеек Excel. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org,

Проект «Технология OLE» | Творческие проекты и работы учащихся

Руководитель: 

Мусина Марина Владимировна

Учреждение: 

ГАПОУ «МЦК-Казанский техникум информационных технологий и связи» г. Казань

Индивидуальный исследовательский проект по информатике «Технология OLE» направлен на изучение возможности использования программных средств технологии OLE и способов применения данной технологии в ОС Windows. Для испытания было рассмотрено применение OLE в программах MS Word и MS Excel.

Подробнее о проекте:

Творческая работа учащейся техникума о применении технологии MS Word и MS Excel направлена на получение автором общего представления о версиях и истории появления и развития технологии OLE. За основу учащаяся взяла такие версии технологии, как OLE 1.*, OLE 2.0 и ActiveX, и, изучив их, рассмотрела особенности их использования в программах текстовых документов.

Готовая творческая работа по информатике на тему «Технология OLE» демонстрирует этапы работы автора над использованием технологий OLE в работе с MS Word, где рассматривается вставка рисунка, вставка картинки, вставка фигуры, вставка снимка, вставка формулы, внедрение таблицы и внедрение объекта с помощью данной технологии. В рамках работы в MS Excel 2010 исследуется применение OLE в виде вставки надписи и внедрения объекта в файл.

Оглавление

Введение
1. Технология OLE.
2. Версии и история технологии.
2.1 OLE 1.*
2.2 OLE 2.0
2.3 ActiveX.
2.4. Применение OLEв MSWord 2010.
2.4.1 Вставка рисунка.
2.4.2 Вставка картинки.
2.4.3 Вставка фигуры.
2.4.4 Вставка диаграммы.
2.4.5 Вставка снимка.
2.4.6 Вставка формулы.
2.4.7 Внедрение таблицы.
2.4.8 Внедрение объекта.
2.5. Применение OLE в MSExcel 2010.
2.5.1 Вставка надписи.
2.5.2 Внедрение объекта (значок).
2.5.3 Внедрение объекта
Заключение
Литература

Введение

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

OLE-технологии.

Но не каждый пользователь задумывается, как на самом деле это работает. Здесь задействована особенная технологияOLE, позволяющая работать с данными, не предназначенными для данной программы, а также для работы и связи одной программы-процессора с другой программой-процессором.

Целью работы является: изучение возможности использования программных средств технологии OLE и способы применения данной технологии в ОС Windows.

Для достижения поставленной цели были сформулированы следующие задачи:

  • изучить литературу по данной теме;
  • изучить различные электронные источники по данной теме;
  • изучить теоретические и практические сведениятехнологииOLE;
  • определить среды применения данной технологии;
  • научиться распознавать и отличать данную технологию;
  • подвести итоги работы и сделать выводы.

Предметом исследования является: программная технология OLE.

Методы исследования: теоретический анализ источников, формализация, обобщение, описание.

Технология OLE

Технология OLE (ObjectLinkingandEmbedding) — этотехнология связывания и внедрения объектов в другие документы и объекты. Изначально, технология была разработана корпорацией Microsoft для своего продукта ОС Windows, а также для внедрения в отдельные дополнительные программы для ОС Windows, например, офисный пакет приложений MicrosoftOffice, где данная технология нашла более широкое свое применение.

OLE позволяет передавать часть работы от одной программы редактирования к другой и возвращать результаты этой работы.Например, несмотря на главную цель текстового процессора MicrosoftWord, — работа с текстовыми документами,при использовании данного текстового процессорав документе можно не только вводить данные, но и создавать таблицы, вставлять картинки, фотографии, часть элемента из другой программы MicrosoftOffice (например, таблицу из MicrosoftExcel) и т. д.

Основное преимущество использования OLE (кроме уменьшения размера файла) — в том, что она позволяет создать главный файл, картотеку функций, к которой обращается программа. Этот файл может оперировать данными из исходной программы, которые после обработки возвращаются в исходный документ.

Технология OLE включает в себя следующие возможности:

  1. Возможность совмещать в одном документе объекты с различными форматами данных (текст, рисунки, таблицы, базы данных и т.д.).
  2. Приложение, содержащее встроенный или связанный объект, хранит сведения о формате данных этого объекта и приложениях работающих с ним.
  3. Приложение, содержащее объект, осуществляет функции по отображению, перемещению и копированию объекта внутри документа и между приложениями. При этом поддерживается целостность объекта.
  4. Возможность автоматически вызывать приложения для редактирования объектов или импортировать функции редактирования из этого приложения.

Технология OLE

  • Установление связи с объектом (например, Word – Excel)
  • Внедрение самого объекта (например, вставка рисунков

)

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

Если данные, связанные с приложением невозможно представить в виде текста или рисунка, например, звук или видеофильм, то они отображаются в документе в виде пиктограммы (значка). Активизация данной связи (двойной щелчок на пиктограмме) приведет к проигрыванию звукового сигнала или видеоролика.

Для данных представимых в наглядном виде (текст, рисунок и пр.) активизация связи приведет к запуску приложения, в котором можно будет произвести редактирование объекта.

Связывание осуществляется следующим образом:первоначально создается исходный документ. Затем с помощью некоторой программы создается объект, который должен быть помещен в исходный документ. Этот объект сохраняется в файле. Эта процедура обязательная, без нее невозможно установление связи. После этого в программе с исходным документом выполняется команда по связыванию объекта с документом.

Преимущества связывания:

  • происходит автоматическое изменение объекта в документе, при изменении оригинала объекта;
  • исходный документ имеет небольшой размер.

При внедрении объект существует только в единственном экземпляре и только там, где он внедрен, т.е. в самом документе (а не в отдельном файле, как при связывании). Для внедрения объекта можно использовать те же команды, что и при обмене данными, или использовать специальную команду для внедрения объекта.

Преимущества внедрения:

  • легкая переносимость документа на другой компьютер;
  • возможность редактирования объекта непосредственно в документе.

Версии и история технологии

OLE 1.*

OLE 1.0 является самой первой общедоступной версией технологии OLE. Был выпущен в 1990 году на основе технологии DDE (DynamicDataExchange) – предшественнике OLE, который использовался в более ранних версиях ОС Windows. Несмотря на то, что технология OLEбазируется на технологии DDE, это является не просто улучшенной версией данной технологии, но и расширенной по функционалу: технология DDE быласильно ограничена в количестве и методах передачи данных между двумя связанными программами.

С появлением технологии OLEстало возможным создать взаимосвязь между двумя документами и даже внедрение документа одного типа в документ другого типа, что значительно упростило и изменило представление о работе с документами.

Когда объект OLE помещен в буфер обмена информацией, он сохраняется в оригинальных форматах Windows (таких, как bitmap или metafile), а также сохраняется в своём собственном формате. Собственный формат позволяет поддерживающей OLE-программе внедрить порцию другого документа, скопированного в буфер, и сохранить её в документе пользователя.

OLE-серверы и клиенты взаимодействуют с системными библиотеками при помощи таблиц виртуальных функций (англ. virtualfunctiontables, VTBL). Эти таблицы содержат указатели на функции, которые системная библиотека может использовать для взаимодействия с сервером или клиентом. Библиотеки OLESRV.DLL (на сервере) и OLECLI.DLL (на клиенте) первоначально были разработаны для взаимодействия между собой с помощью сообщения WM_DDE_EXECUTE, предоставляемого операционной системой.

С появлением OLE 1.1, технология развилась в архитектуру COM (ComponentObjectModel) для работы с компонентами программного обеспечения. Позднее архитектура COM была преобразована и стала называться DCOM.

OLE 2.0

OLE 2.0 не имела особых технических инноваций: те же цели, те же задачи. Но была одна важная особенность: вместо того, чтобы использовать VTBL, OLE 2.0 стал надстройкой над архитектурой COM.

Также в этой версии OLEпоявилась автоматизации технологий draganddrop, inplaceactivationи structuredstorage.

ActiveX

В 1996 году Microsoft переименовала технологию OLE 2.0 в ActiveX. Были представлены элементы управления ActiveX, ActiveX документы и технология ActiveScripting. Эта версия OLE в основном используется веб-дизайнерами для вставки в страницы мультимедийных данных.

Применение OLE в MSWord 2013

Из теоретической части можно сделать вывод, что в текстовом процессоре MicrosoftWordможно не только работать с текстом, но и создавать рисунки, вставлять картинки, встроенные фигуры, фотографии, таблицы, списки, формулы, диаграммы,снимки экрана, использовать программыпакета MicrosoftOffice и даже встраивать целые программы.

Возможность выполнения всех этих функций возможна благодаря технологии OLE.

Цель пункта практической части: Изучение применения технологии OLE в MicrosoftWord 2010.

Перед началом работы необходимо установить и запустить текстовый процессор MicrosoftWord 2010.

Вставка рисунка

Для вставки пользовательского изображения в MicrosoftWord 2010 необходимо:

1. Перейти во вкладку «Вставка» — «Рисунок»

2. Выбрать необходимое изображение из тех, что имеются на Вашем устройстве.

Применение: рисунки используются для разнообразия, а также для визуального оформления текста.

Вставка картинки

Для вставки картинки из предустановленной коллекции изображений в MicrosoftWord 2010 необходимо:

1. Перейти во вкладку «Вставка» — «Картинка».

2. Выбрать изображение из предоставленной коллекции

Применение: картинки предусмотрены для декоративного оформления документа.

Вставка фигуры

Для создания фигуры в MicrosoftWord 2010 необходимо:

1. Перейти во вкладку «Вставка» — «Фигуры».

2. Выбрать подходящую фигуру.

3. С помощью левой клавиши мыши создать фигуру.

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

Вставка диаграммы


Для создания фигуры в MicrosoftWord 2010 необходимо:

1. Перейти во вкладку «Вставка» — «Диаграммы».

2. Выбрать подходящую диаграмму Примечание: В этой части задания начинается второго варианта использования технологии OLE – связывание программ. При точном следовании инструкции, начиная с этого шага будет автоматически открыта электронная книга MicrosoftExcel (если таковая установлена) под названием «Диаграмма в MicrosoftWord». Отличие этой книги от пользовательской в том, что она связана с документом, в котором создана диаграмма.

3. Замените данные в таблице на те, которые подходят для решения Вашей задачи.

Применение: Диаграммы применяются для визуализации графиков, математических, аналитических и экономических задач.

Вставка снимка

Для вставки снимки экрана активного элемента в MicrosoftWord 2010 необходимо:

1. Перейти во вкладку «Вставка» — «Снимок».

2. Выбрать нужное окно из доступных для создания и вставки снимка этого окна.

Применение: Снимки экрана применяются при составлении отчетов/практических работ.

Вставка символа Юникод

Для вставки символа Юникод в MicrosoftWord 2010 необходимо:

1. Перейти во вкладку «Вставка» — «Символ».

2. Выбрать подходящий символ или перейти во вкладку «Другие символы» и вставить символ из открывшегося окна.

Применение: Символы применяются как единичные способы вставки уникального символа из формул, или вставки символов, поиск которых затруднителен в других средах работы

Вставка формулы

Для вставки внешнего объекта в MicrosoftWord 2010 необходимо:

1. Перейти во вкладку «Вставка» — «Формула». Сразу же вставится «Место для формулы», а активная вкладка изменится на работу с формулами — «Конструктор». На более новых версиях MicrosoftWordоткроется дополнительное окно с редактированием формулы. Также можно воспользоваться встроенными формулами при раскрытии контекстного меню вставки формулы.

2. Ввести/вставить подходящую формулу для решения подходящей задачи.

Применение: Формулы применяются для создания математических, физических и информационных задач. Могут быть использованы с фигурами, т. к. в стандартный набор фигур входят и объемные фигуры, для создания более продвинутых формул.

Внедрение таблицы


Здесь возможны два варианта выполнения работы:

I. Использование встроенной таблицы.

Для вставки встроенной таблицы вMicrosoftWord 2010 необходимо:

1. Перейти во вкладку «Вставка» — «Таблица».

2. Задать необходимый размер таблицы.

3. Отредактировать полученную таблицу.

Использование встроенной таблицы

Для вставки встроенной таблицы вMicrosoftWord 2010 необходимо:

1. Перейти во вкладку «Вставка» — «Таблица».

2. Выбрать «Таблица Excel». Сразу после выбора этого пункта запустится табличный процессор MicrosoftExcel, внутри текстового процессора MicrosoftWord.

3. Отредактировать полученную таблицу.

Применение: Таблицы применяются для экономических и бухгалтерских расчетов, подсчетов и отчетов. Примечательно, что, работая с таблицами MicrosoftExcel, данные можно занести сначала в отдельную книгу, и лишь затем интегрировать эту книгу в документ MicrosoftWord, при этом сохранится связь между книгой и документом: все изменения затронут и обновятся как в книге, так и в документе.

Внедрение объекта

Для вставки внешнего объекта (программы) вMicrosoftWord 2010 необходимо:

1. Перейти во вкладку «Вставка» — «Объект».

2. Выбрать подходящее для решения поставленной задачи меню «Создание» или «Создание из файла».

3. Выполнить настройку/указания файла для создания объекта.

Применение: Объекты могут применяться для наглядной демонстрации, а также запуска среды исполнения программ для практического применения заданной темы.

Применение OLE в MSExcel 2010

Возможность использования технологии OLE реализована не только в текстовом процессоре MicrosoftWord 2010, но и в табличном процессоре MicrosoftExcel 2010. Однако в MicrosoftExcel 2010 эта технология раскрыта в наиболее специализированном направлении, но это не мешает дать оценку данной технологии в данной среде.

Цель пункта практической части: Изучение применения технологии OLE в MicrosoftExcel2010.

Перед началом работы необходимо установить и запустить табличный процессор MicrosoftExcel 2010.

Вставка надписи


Длявставки надписи в MicrosoftExcel 2010 необходимо:

1. Перейти во вкладку «Вставка» — «Надпись».Курсор изменится на стрелку.

2. Задать место создания надписи.

3. Ввести соответствующие данные

Применение: Надписи, созданные данным методом, можно переместить не затрагивая ячейки самой таблицы, как отдельный объект.

Внедрение объекта (значок)

Для внедрения внешнего объекта в MicrosoftExcel 2010 необходимо:

1. Перейти во вкладку «Вставка» — «Объект».

2. Отметить флажок«В виде значка».

3. Указать путь к файлу, установить параметры вставки.

Применение: Миниатюра-ярлык. Объект открывается в новом окне Windows, как отдельное приложение.

Внедрение объекта

Для внедрения внешнего объекта в MicrosoftExcel 2010 необходимо:

1. Перейти во вкладку «Вставка» — «Объект».

2. Снять выделение с флажка «В виде значка».

3. Указать путь к файлу, установить параметры вставки.

Применение: Вставка внешних связанных или независимых объектов из линейки Microsoft Office в таблицу MicrosoftExcel 2010.

Заключение

В процессе выполнения данного исследования:

  1. Изучили основные свойства технологии OLE и её практическое применение в ОС MicrosoftWindows;
  2. Использовали текстовый процессор MicrosoftWord 2010 для наглядного применениятехнологии OLE;
  3. Создали несколько связанных файлов, используя технологию OLE.

Помимо этого мы сделали следующие выводы:

  1. Использование технологии OLEсущественно разнообразило функционал текстового процессора MicrosoftWord;
  2. С помощью технологии OLEможно запускать, вставлять и связать внешние файлы с текстовым процессором MicrosoftWord.

В конце своей работы, хочется сказать, что данная тема мне очень интересна, и я собираюсь работать над ней дальше.

Для написания данной работы были использованы ресурсы Сети Интернет.


Если страница Вам понравилась, поделитесь в социальных сетях:

ios — SwiftUI не может связать введенное значение

Задать вопрос

спросил

Изменено 2 года, 7 месяцев назад

Просмотрено 178 раз

Я нашел этот демонстрационный проект, который показывает, как использовать clean swift с swiftU, поэтому я попытался сделать что-то подобное самостоятельно. Я столкнулся с проблемой при использовании Core Data. В чистой быстрой архитектуре только один источник (в моем случае appState) может передавать данные для просмотра. Итак, я создал контейнер для инъекций, в нем интерактор и appState . Контейнер:

 структура DIContainer: EnvironmentKey {
    @ObservedObject переменная appState: AppState
    пусть интеракторы: Interactors
    init(appState: AppState, интеракторы: Interactors) {
        self.appState = состояние приложения
        self.interactors = интеракторы
    }
 
 класс AppState: ObservableObject, Equatable {
    вар пользовательские данные = пользовательские данные ()
}
расширение AppState {
    класс UserData: ObservableObject, Equatable {
        @Published var places:[Place] = []
}
 

И я ввожу окружение следующим образом:

 @Environment(\.injected) private var внесенный: DIContainer
 

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

 var body: some View {
        НавигацияВид {
            Zстек {
                Список {
                    ForEach(injected. $appState.userData.places.wrappedValue){ место в
                        PlaceRow(место: место)
                    }
....
 

Проблема в том, что даже массив загружается, представление на это не реагирует. Он обновляется только тогда, когда я перехожу к другому представлению. Кроме того, когда я удаляю или добавляю новые элементы в массив, представление не меняется. Если вы можете дать мне несколько идей, было бы неплохо. Я гуглил 4 дня, все, что я находил, у меня не работает.

  • IOS
  • Swift
  • Привязывание
  • Swiftui

Если вы вводите Dicontainer в свой .

помните, что ваш View не будет обновляться при изменении свойств DIContainer . Вы должны вручную наблюдать за ними.

Вы можете попробовать одно из следующих решений:

1) Подпишитесь на изменения свойств AppState в .onReceive :

 @Environment(\. injected) private var введено: DIContainer
var body: некоторый View {
    Вид навигации { ... }
        .onReceive(injected.appState.userData.$places) { размещает в
            // делаем что-то с местами,
            // например. назначить переменной @State для использования в цикле ForEach...
        }
}
 

2) Внедрить UserData непосредственно как @EnvironmentObject :

 @EnvironmentObject переменная userData: UserData
ContentView().environmentObject(container.appState.userData)
 

Поскольку UserData является ObservableObject , он будет изменяться всякий раз, когда изменяется любое из его @Published свойств (например, places ).

3) Подпишитесь на AppState / UserData в ViewModel и наблюдайте только ViewModel в вашем View .

Более подробное объяснение можно найти в этой версии того же демонстрационного проекта, на который вы ссылались в своем вопросе.

4

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

android — привязка данных с помощью Kotlin: ProcessDataBinding Невозможно получить общедоступный конструктор без аргументов

спросил

Изменено 1 год, 7 месяцев назад

Просмотрено 11 тысяч раз

Я получаю эту ошибку, когда набираю . /gradlew test в командной строке:

 e: java.util.ServiceConfigurationError: javax.annotation.processing.Processor: android.databinding.annotationprocessor.ProcessDataBinding Невозможно получить публичный нет -arg конструктор
        в java.base/java.util.ServiceLoader.fail(ServiceLoader.java:581)
        в ...
Вызвано: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
        на java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
        в java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566)
        в java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
        ... еще 59
> Задача: приложение: kaptDebugKotlin НЕ ПРОЙДЕНО
ОШИБКА: сборка не удалась с исключением.
 

Это также происходит, когда у меня есть kapt "androidx.databinding:databinding-compiler:$gradlePluginVersion" (как для версий 3.2.0, так и для версий 3.3.0-alpha13) в build.gradle. У меня нет других зависимостей kapt. У меня включена привязка данных, она работает, и я могу запускать тесты через Android Studio (работает задача gradle testDebugUnitTest). Я использую встроенный JDK.

  • андроид
  • градиент
  • котлин
  • android-привязка данных

5

Я решил эту проблему, используя Java 8 вместо Java 11. Та же проблема может возникнуть с Java 9 и 10. Я установил свой JAVA_HOME через export JAVA_HOME=/path/to/java/8 , а затем запустил ./gradlew build . И вуаля, ошибки нет.

У меня было исключение e: java.util.ServiceConfigurationError: javax.annotation.processing.Processor: android.databinding.annotationprocessor.ProcessDataBinding Невозможно получить общедоступный конструктор без аргументов и java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException , когда я запускал сборку из командной строки с помощью gradle. Но они не появлялись, когда я запускал сборку из Android Studio. Я подозреваю, что это связано с тем, что Android Studio каким-то образом использует собственную версию Java.

2

Если вам нужно использовать привязку данных на Java 9+, вам нужно добавить зависимости JAX-B. Добавьте это в свой build.gradle dependencies {} block:

 // Добавляем отсутствующие зависимости для JDK 9+
если (JavaVersion.current().ordinal() >= JavaVersion.VERSION_1_9.ordinal()) {
    // Добавьте оба, если вы используете и Kotlin, и Java
    // Если вы используете Котлин
    kapt "com.sun.xml.bind:jaxb-core:2.3.0.1"
    глава "javax.xml.bind:jaxb-api:2.3.1"
    kapt "com.sun.xml.bind:jaxb-impl:2.3.2"
    // Если вы используете Java
    annotationProcessor "com.sun.xml.bind:jaxb-core:2.3.0.1"
    annotationProcessor "javax.xml.bind:jaxb-api:2.3.1"
}
 

Это из-за версии Java > 8

Укажите в JAVA_HOME версию Java 8, она будет работать без сбоев

Ссылка для скачивания Java 8

Подробное решение здесь : android.databinding.annotationprocessor.ProcessDataBinding Невозможно получить общедоступный конструктор без аргументов

Я получаю эту ошибку, потому что мои « build.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *