You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by "Eugene Kuleshov (JIRA)" <ji...@codehaus.org> on 2006/01/12 21:03:02 UTC

[jira] Reopened: (MNGECLIPSE-25) Enable Maven in project causes ClassCastException

     [ http://jira.codehaus.org/browse/MNGECLIPSE-25?page=all ]
     
Eugene Kuleshov reopened MNGECLIPSE-25:
---------------------------------------


> Enable Maven in project causes ClassCastException
> -------------------------------------------------
>
>          Key: MNGECLIPSE-25
>          URL: http://jira.codehaus.org/browse/MNGECLIPSE-25
>      Project: Maven 2.x Plug-in for Eclipse
>         Type: Bug

>     Versions: 0.0.3
>  Environment: WIN2K, Eclipse 3.1, JDK 1.5
>     Reporter: Roland Klein
>     Assignee: Eugene Kuleshov
>      Fix For: 0.0.4
>  Attachments: pzFileReader.zip, src.zip
>
>
> Hello,
> i encounter some problem with the eclipse plugin, when i enable Maven2 for a particular project.
> In the eclipse log are three entries and one of them says that there is a ClassCastException in Maven2Builder.java line 52
> 52: Maven2ClasspathContainer container = ( Maven2ClasspathContainer ) JavaCore.getClasspathContainer( path, project );
> sometimes i got a NPE in the same class line 54, then the variable container is not initialized.
> 54: JavaCore.setClasspathContainer( container.getPath(), new IJavaProject[] { project }, new IClasspathContainer[] { new Maven2ClasspathContainer( entries ) }, monitor );
> After debugging i can say that the method JavaCore.getClasspathContainer() returns a JavaModelManager when you just started eclipse and causes the ClassCastExceptions, but I don't know if we can ignore it.
> I tried to fix this problem, but i don't know the eclipse API very well. So i post it here in the hope someone can use and improve it.
> Then i encounter a problem with MavenEmbedder and i changed the maven-embedder-2.0-beta-4-SNAPSHOT-dep.jar to maven-embedder-2.0.1-dep.jar and rebuild the plugin.
> This problem occurs, everytime i change the pom.xml by hand then the project rebuilds but MavenEmbedder is still running and claims there is a duplicate projectId  in pom.xml. Then i inserted in Maven2Plugin.resolveClasspathEntries() a call to resetMavenEmbedder() before it is got through getMavenEmbedder(), this fixes the problem, but i thing this is shooting with canons on birds. Maybe there is a possibility to reset MavenEmbedder without to instantiate a new one.
> <codesnippet Maven2Builder.build()>
> // line 52-55 are replaced
> //        Maven2ClasspathContainer container = ( Maven2ClasspathContainer ) JavaCore
> //            .getClasspathContainer( path, project );
> //        JavaCore.setClasspathContainer( container.getPath(), new IJavaProject[] { project },
> //            new IClasspathContainer[] { new Maven2ClasspathContainer( entries ) }, monitor );
>         // ############### CHANGES ################
>         IClasspathContainer icContainer = JavaCore.getClasspathContainer( path, project );
>         IJavaProject[] projects = new IJavaProject[] { project };
>         IPath newPath = null;
>         IClasspathContainer[] classpathContainers = null;
>         if( icContainer == null ) {
>           newPath = new Path( Maven2Plugin.CONTAINER_ID );
>           classpathContainers = new IClasspathContainer[] { new Maven2ClasspathContainer( entries ) };
>           JavaCore.setClasspathContainer( newPath, projects, classpathContainers, monitor );
>         } else {
>           newPath = icContainer.getPath();
>           if( icContainer instanceof Maven2ClasspathContainer ) {
>             classpathContainers = new IClasspathContainer[] { new Maven2ClasspathContainer( entries ) };
>             JavaCore.setClasspathContainer( newPath, projects, classpathContainers, monitor );
>           } else {
>             newPath = new Path( Maven2Plugin.CONTAINER_ID );
>             classpathContainers = new IClasspathContainer[] { new Maven2ClasspathContainer( entries ) };
>             JavaCore.setClasspathContainer( newPath, projects, classpathContainers, monitor );
>           }
>         }
>         // ############### CHANGES ################
> </codesnippet>

-- 
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


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org