Hi devs,

I use the maven-eclipse-plugin 2.9-SNAPSHOT to make a maven project to
eclipse plugin, I get the error info:
[INFO] Trace
java.lang.StringIndexOutOfBoundsException: String index out of range: -38
        at java.lang.String.substring(String.java:1768)
        at java.lang.String.substring(String.java:1735)
        at
org.apache.maven.plugin.eclipse.writers.workspace.EclipseSettingsWriter.write(EclipseSettingsWriter.java:108)
        at
org.apache.maven.plugin.eclipse.EclipsePlugin.writeConfiguration(EclipsePlugin.java:1178)
        at
org.apache.maven.plugin.ide.AbstractIdeSupportMojo.execute(AbstractIdeSupportMojo.java:511)
        at
org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
        at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
        at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
        at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
        at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
        at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
        at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
        at
org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
        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:592)
        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)

The jira: http://jira.codehaus.org/browse/MECLIPSE-642 describe and it's
still open.

Then I check out the source code to find out what happens.
At last, I think the root cause is:
List resources = config.getProject().getResources();
            if ( resources != null )
{
Iterator it = resources.iterator();
while ( it.hasNext() )
{
Resource resource = (Resource) it.next();
String relativePath = resource.getDirectory().substring( basedir.length()
).replace( '\\', '/' ); // Error happens here
coreSettings.put( PROP_JDT_CORE_COMPILER_ENCODING + relativePath, encoding
);
}
}
because the resource.getDirectory() is shorter than basedir!!!
I have a work-around way to resolve it, but I could not submite it directly,
so I attach the patch here. Please review and check it, If it works fine and
doesn't cause other regressions, please check it in, as my product will use
maven-eclipse-plugin frequently, thank you very much!
-- 
Best regards!


               John Xiao
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to