Сбой установки mvn из-за «несовместимых типов» - PullRequest
5 голосов
/ 07 декабря 2011

Я получаю следующую ошибку от "mvn clean install"

[ERROR] /private/tmp/framework/src/main/java/org/jboss/narayana/txframework/api/annotation/transaction/WSBA.java:[21,65] incompatible types found : org.jboss.narayana.txframework.api.configuration.transaction.CompletionType required: org.jboss.narayana.txframework.api.configuration.transaction.CompletionType [ERROR] /private/tmp/framework/src/main/java/org/jboss/narayana/txframework/api/annotation/service/ServiceRequest.java:[32,56] incompatible types found : org.jboss.narayana.txframework.api.configuration.service.RequestType required: org.jboss.narayana.txframework.api.configuration.service.RequestType [INFO] 2 errors

Я предполагаю, что это проблема зависимости, и где-то в пути сборки есть еще один экземпляр CompletionType. Я проверил, что это не так, а также попытался с пустым ~ / .m2 / хранилищем.

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

Мои зависимости в pom.xml не должны включать библиотеку, в которой есть эти классы.

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

Я вижу эту проблему на двух моих компьютерах. На этих компьютерах синхронизирована большая часть среды, поэтому меня не удивляет, что проблема также синхронизируется. Однако на моем офисном компьютере я могу выполнить успешную «установку mvn» в Intellij, но не в командной строке. На моем домашнем компьютере эта проблема возникает как в командной строке, так и в IntelliJ.

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

Pom.xml можно найти здесь:

http://anonsvn.jboss.org/repos/labs/labs/jbosstm/trunk/txframework/framework/pom.xml

Да, я знаю, что это пакет JBoss, в котором возникает проблема. Я работаю на JBoss, и это мой код, поэтому я не могу заставить их это исправить; -)

Спасибо.

Ответы [ 2 ]

3 голосов
/ 09 декабря 2011

Это вызвано ошибкой в ​​обработке аннотаций компилятора в этой версии Oracle JDK:

java version "1.6.0_27" Java(TM) SE Runtime Environment (build 1.6.0_27-b07) Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode)

Это также происходит в эквивалентной версии Mac, которая на момент публикации является последней версией.

Я исправил проблему, переключившись на этот выпуск OpenJDK:

java version "1.6.0_22" OpenJDK Runtime Environment (IcedTea6 1.10.4) (fedora-60.1.10.4.fc15-x86_64) OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)

Существуют обходные пути, если вы не можете переключить JDK (например, если у вас Mac).

Более подробную информацию можно найти в отчете об ошибке, который я использую для отслеживания этой проблемы:

https://issues.jboss.org/browse/JBTM-997

2 голосов
/ 07 декабря 2011

Редактировать: я реструктурировал этот ответ, потому что его основная цель - предоставить решение, чтобы найти проблему, а не решить ее.Элементы добавляются в том порядке, в котором я их разместил в комментариях или здесь.

0) Это , а не обычная проблема с зависимостями, потому что она исчезнет, ​​если вы измените имяваши классы.

1) Это может быть связано с версией Java.Попробуйте установить источник и цель явно.

2) Это может быть jar, который неправильно в вашей структуре зависимостей, попробуйте это: добавьте это в ваш pom:

<plugins>
    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <configuration>
                <outputDirectory>
                    ${project.build.directory}
                </outputDirectory>
            </configuration>
            <executions>
                <execution>
                    <phase>initialize</phase>
                    <configuration>
                        <version>4.0.0</version>
                    </configuration>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
</plugins>

вызовите clean install и затемпопробуйте эту команду в вашей оболочке (в базовом пути проекта, а НЕ в директории dist.):

find . -name "*jar" -exec jar -tvf {} \; |grep RequestType

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

3) Возможно, сейчас существует правильная версия вашего класса, но класс, который является источником проблемы (ServiceRequest.java), компилируется с неправильным.Поместите их в один и тот же путь к классам, затем повторите попытку.

4) Есть ли у вас на диске старая версия класса?Попробуйте удалить его (переместив на переносное устройство, если оно вам все еще нужно).

5) Удалите каждый двоичный файл в вашем пути к классам вручную.Не полагайтесь на работу mvn clean.

6) Распечатайте classpath (Google скажет вам, как), который использует maven.Убедитесь, что на том, чего вы не ожидали, ничего нет.

7) (неясен) Можно создать один и тот же каталог дважды, используя более неясные функции UTF.Это может произойти, если ваши пути содержат не ASCII-символы, а один из ваших компьютеров - Mac (правда, без шуток. Для немецкого языка: http://www.danisch.de/blog/2011/11/18/wer-unicode-und-utf-erfunden-hat-gehort-erschlagen/).

8) Вы проверили, что переменные среды установлены правильно?Дважды проверьте их.

9) позвоните:

mvn clean
mvn compile

и посмотрите, сколько у вас экземпляров классов-нарушителей.

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