Неправильное или ошибочное использование базового класса (java. * Или javax. *), Когда не создается базовая библиотека. - PullRequest
8 голосов
/ 05 октября 2011

Когда я очищаю свой проект, я получаю следующую ошибку:

[2011-10-05 13:47:53 - The Basics] 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.

Это часто происходит из-за непреднамеренного включения файла базовой библиотеки в проекте вашего приложения, при использовании IDE (например, Затмение). Если вы уверены, что не намеренно определяете основной класс, то это наиболее вероятное объяснение того, что продолжается.

Тем не менее, вы можете пытаться определить класс в ядре пространство имен, источником которого вы могли воспользоваться, например, из не-Android проекта виртуальной машины. Это будет большинство конечно, не работает. Как минимум, это ставит под угрозу совместимость вашего приложения с будущими версиями платформы. Это также часто сомнительной законности.

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

Если вы используете «--core-library», но на самом деле создание приложения, тогда будьте предупреждены, что ваше приложение все равно не удастся построить или запустить, в какой-то момент. Пожалуйста, будьте подготовлен для злых клиентов, которые считают, например, что ваш приложение перестает функционировать после обновления операционной системы система. Вы будете виноваты в этой проблеме.

Если вы законно используете какой-то код, который находится в основной пакет, то самая простая и безопасная альтернатива упаковать этот код. То есть переместить рассматриваемые классы в ваше собственное пространство имен пакетов. Это означает, что они никогда не будут в конфликт с основными классами системы. JarJar - это инструмент, который может помочь Вы в этом стремлении. Если вы обнаружите, что не можете этого сделать, то это признак того, что путь, по которому вы идете, в конечном итоге привести к боли, страданию, горе и скорби.

[2011-10-05 13:47:53 - The Basics] Dx 1 error; aborting
[2011-10-05 13:47:53 - The Basics] Conversion to Dalvik format failed with error 1

Ответы [ 4 ]

4 голосов
/ 13 сентября 2012

У меня была эта проблема.Я использую Maven для создания своих проектов Android.Моя проблема была вызвана одной из моих зависимостей в зависимости от банок Android.Я обновил мой pom, чтобы исключить Android из этой зависимости, и это решило это для меня.

  <dependency>
        <groupId>org.reassembler</groupId>
        <artifactId>synth-android</artifactId>
        <version>2.5.8</version>
        <exclusions>
            <exclusion>
                <artifactId>junit</artifactId>
                <groupId>junit</groupId>
            </exclusion>
            <exclusion>
                <artifactId>android</artifactId>
                <groupId>android</groupId>
            </exclusion>
        </exclusions>
    </dependency>

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

2 голосов
/ 28 июня 2014

В интересах любого, кто мог наткнуться на это, эта проблема может быть вызвана включением более старой библиотеки, такой как android.jar.Удаление файла .jar из вашего пути сборки позволит вам скомпилировать.В противном случае вы можете использовать jarjar, упомянутый в сообщении об ошибке, чтобы переместить файл .jar в другой пакет.

1 голос
/ 08 октября 2011

Ваш IDE неправильно настроен. Убедитесь, что ваши скрипты или IDE не передают rt.jar или android.jar в dx.

0 голосов
/ 21 апреля 2016

В Android Studio я включил файлы java и javax jar в свою папку lib, и с ними были связаны зависимости (в build.gradle на уровне приложения). Я их закомментировал.

//compile files('libs/  K  java-rt-jar-stubs-1.5.0.jar')
//compile 'javax.annotation:jsr250-api:1.0'
//compile files('libs/javax. annotation.jar')

Затем я пошел в представление проекта и удалил файлы JAR. Было несколько устаревших экземпляров java.awt.geom, которые мне пришлось очистить, но пересобрать проект, и тогда я был в порядке.

...