[ http://jira.codehaus.org/browse/MNG-2657?page=all ]
Kenny MacDermid closed MNG-2657. -------------------------------- Resolution: Cannot Reproduce > Generics - Compilation failure - incompatible types - cast to parent type > from method taking in subtype. > -------------------------------------------------------------------------------------------------------- > > Key: MNG-2657 > URL: http://jira.codehaus.org/browse/MNG-2657 > Project: Maven 2 > Issue Type: Bug > Affects Versions: 2.0.4 > Environment: Windows Xp and Ubuntu Linux. Standard x86 hardware. > Reporter: Kenny MacDermid > > Maven will not compile classes in the following situation, although eclipse > will compile them fine: > These are the two classes that are the types maven is getting confused with: > public abstract class User {...} > public class Employee extends User {...} > A factory called EntityManager returns a generic typed Criteria: > public <T, U extends T> Criteria<T> createCriteria(Class<U> c) { > return new CriteriaImpl<T>(c); > } > This is being used in the Tests in the following way: > Criteria<User> criteria = em.createCriteria(Employee.class); > As I said, in eclipse this compiles fine, with no warnings. With maven I > receive the error message: > [INFO] Compilation failure > ...UserTest.java:[59,51] incompatible types > found : ....Criteria<....Employee> > required: ....Criteria<....User> > The stack trace is as follows: > org.apache.maven.BuildFailureException: Compilation failure > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:555) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:475) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:454) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:306) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:140) > at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:322) > at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:115) > at org.apache.maven.cli.MavenCli.main(MavenCli.java:256) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) > at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) > at > org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) > at org.codehaus.classworlds.Launcher.main(Launcher.java:375) > Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation > failure > at > org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:505) > at > org.apache.maven.plugin.TestCompilerMojo.execute(TestCompilerMojo.java:99) > at > org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:412) > at > org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:534) > ... 16 more > Other possible useful maven information (actualy dir replaced with DIR): > [DEBUG] Configuring mojo > 'org.apache.maven.plugins:maven-compiler-plugin:2.0.1:testCompile' --> > [DEBUG] (f) basedir = DIR > [DEBUG] (f) buildDirectory = DIR\target > [DEBUG] (f) classpathElements = [DIR\target\classes, > DIR\target\test-classes, ... (many others)] > [DEBUG] (f) compileSourceRoots = [DIR\src\test\java] > [DEBUG] (f) compilerId = javac > [DEBUG] (f) debug = true > [DEBUG] (f) fork = false > [DEBUG] (f) optimize = false > [DEBUG] (f) outputDirectory = DIR\target\test-classes > [DEBUG] (f) outputFileName = IdentityRepository-0.1 > [DEBUG] (f) showDeprecation = false > [DEBUG] (f) showWarnings = false > [DEBUG] (f) source = 1.5 > [DEBUG] (f) staleMillis = 0 > [DEBUG] (f) target = 1.5 > [DEBUG] (f) verbose = false > [DEBUG] -- end configuration -- > Thanks in advance, > Kenny -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira