Когда я пытаюсь экспортировать свое приложение для Android, я получаю это сообщение об ошибке.
[2012-05-02 14:34:07 - MyApplication] Dx
trouble processing "java/nio/CharBuffer.class":
Опрометчивое или ошибочное использование основного класса (java.* или javax.*), когда не создается основная библиотека.
Это часто происходит из-за непреднамеренного включения файла основной библиотеки в проект вашего приложения при использовании IDE (например, Eclipse). Если вы уверены, что не намеренно определяете базовый класс, то это наиболее вероятное объяснение того, что происходит.
Однако на самом деле вы можете попытаться определить класс в основном пространстве имен, источник которого вы могли взять, например, из проекта виртуальной машины, отличной от Android. Это наверняка не сработает. Как минимум, это ставит под угрозу совместимость вашего приложения с будущими версиями платформы. Это также часто сомнительной законности.
Если вы действительно собираетесь создать базовую библиотеку, которая подходит только для создания полного дистрибутива виртуальной машины, а не для компиляции приложения, используйте параметр «--core-library», чтобы подавить это сообщение об ошибке.
Если вы продолжите использовать «--core-library», но на самом деле создаете приложение, то имейте в виду, что ваше приложение все равно не будет собрано или запущено в какой-то момент. Пожалуйста, будьте готовы к разгневанным клиентам, которые обнаружат, например, что ваше приложение перестанет работать после обновления их операционной системы. Вы будете виноваты в этой проблеме.
Если вы законно используете какой-то код, который оказался в основном пакете, то самая простая безопасная альтернатива, которая у вас есть, — это переупаковать этот код. То есть переместите рассматриваемые классы в собственное пространство имен пакетов. Это означает, что они никогда не будут конфликтовать с базовыми системными классами. JarJar — это инструмент, который может помочь вам в этом начинании. Если вы обнаружите, что не можете этого сделать, то это указывает на то, что путь, по которому вы идете, в конечном итоге приведет к боли, страданию, горю и плачу.
[2012-05-02 14:34:07 - MyApplication] Dx 1 error; aborting
[2012-05-02 14:34:07 - MyApplication] Conversion to Dalvik format failed with error 1
[2012-05-02 14:42:22 - MyApplication] Dx
trouble processing "java/nio/CharBuffer.class":
Ill-advised or mistaken usage of a core class (java.* or javax.*)
when not building a core library.