[ 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