2014-10-12 3 views
2

В настоящее время я работаю над обновлением плагина maven в Maven 3.1 и выше. Кажется, что плагин работает хорошо, но мне очень сложно обновить testuite до последних изменений. После борьбы с жесткой Lib-версия-бой Mee все вроде нормально, но я получаю следующее исключение в моем TestSuite:Отслеживание странных исключений литейного класса

java.lang.ClassCastException: org.codehaus.plexus.DefaultPlexusContainer$LoggerManagerProvider cannot be cast to javax.inject.Provider 
at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:46) 
at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38) 
at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62) 
at com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:84) 
at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:132) 
at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:93) 
at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:80) 
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1059) 
at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:80) 
at com.google.inject.internal.Initializer$InjectableReference.get(Initializer.java:174) 
at com.google.inject.internal.Initializer.injectAll(Initializer.java:108) 
at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:174) 
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110) 
at com.google.inject.Guice.createInjector(Guice.java:96) 
at com.google.inject.Guice.createInjector(Guice.java:73) 
at com.google.inject.Guice.createInjector(Guice.java:62) 
at org.codehaus.plexus.DefaultPlexusContainer.addPlexusInjector(DefaultPlexusContainer.java:481) 
at org.codehaus.plexus.DefaultPlexusContainer.<init>(DefaultPlexusContainer.java:206) 
at org.codehaus.plexus.DefaultPlexusContainer.<init>(DefaultPlexusContainer.java:168) 
at net.flexmojos.oss.plugin.compiler.DependencyFilteringTest.initPlexus(DependencyFilteringTest.java:66) 

Странным является то, что org.codehaus.plexus.DefaultPlexusContainer является частью Maven: org.eclipse.sisu: org.eclipse.sisu.plexus: 0.3.0.M1 библиотека

final class org.codehaus.plexus.DefaultPlexusContainer.LoggerManagerProvider 
    implements org.eclipse.sisu.inject.DeferredProvider<LoggerManager> 

, который расположен в org.eclipse.sisu: org.eclipse.sisu.inject: 0.3.0 .M1 с

public interface org.eclipse.sisu.inject.DeferredProvider<T> 
    extends com.google.inject.Provider<T> 

который является lo лаборантом в org.sonatype.sisu: Sisu-Guice: 3.2.4 с

public interface com.google.inject.Provider<T> extends javax.inject.Provider<T> { 

Так в конце концов LoggerManagerProvider должны быть также com.google.inject.Provider, а также javax.inject.Provider ... если я остановлюсь в отладчике и проверю:

tst instanceof com.google.inject.Provider --> True 
tst instanceof javax.inject.Provider --> False 

Как это может быть? На мой взгляд, в моей виртуальной машине есть некоторая плохая версия класса, но я не знаю, как я должен отслеживать это.

Крис

+0

какой-либо другой вариант баночки на пути к классу? – SMA

+0

Вы можете поделиться своим файлом pom? – Mzf

+0

Я только что внес изменения в свою ветку функций для этого ... это доступно в github https://github.com/chrisdutz/flexmojos/blob/feature/falcon-support/flexmojos-maven-plugin/pom.xml –

ответ

1

... Хорошо, как отвечал на мой вопрос Иерархия Класс:

org.codehaus.plexus.DefaultPlexusContainer.LoggerManagerProvider -> org.eclipse.sisu.inject.DeferredProvider - > com.google.inject.Provider -> javax.inject.Provider

Я проверил, что мой путь к классу содержит только один org.eclipse.sisu.inject.DeferredProvider и один javax.inject.Provider ... но сегодня я выяснили, что один странный пакет предоставил другую реализацию com.google.inject.Provider ... после исключения этого из сборки, все было good again :-)

Думаю, что я должен привыкнуть к использованию плагинов, таких как Tattletale (http://tattletale.jboss.org/) и аналогичным образом обнаруживать такие вещи.

Смежные вопросы