Uploaded image for project: 'Clover'
  1. Clover
  2. CLOV-1370

Code refactoring in Eclipse fails when clover.jar is added in classpath

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Medium Medium
    • 3.2.0
    • 3.1.12
    • CEP Plugin
    • None
    • Eclipse versions:
      "Eclipse Platform 3.7.0.I20110613-1736 org.eclipse.platform.ide null" and "Eclipse Platform 4.3.0.I20130605-2000 org.eclipse.platform.ide null"

      Stack trace:

      java.lang.reflect.InvocationTargetException
      at org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:110)
      at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
      Caused by: Java Model Exception: Java Model Status [clover.org.apache.commons.lang.enum [in /usr/local/external/vendor/atlassian/clover-ant/3.1.11/lib/clover.jar] does not exist]
      at org.eclipse.jdt.internal.core.JavaElement.newJavaModelException(JavaElement.java:505)
      at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:246)
      at org.eclipse.jdt.internal.core.Openable.openAncestors(Openable.java:504)
      at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:240)
      at org.eclipse.jdt.internal.core.SourceRefElement.generateInfos(SourceRefElement.java:107)
      at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:518)
      at org.eclipse.jdt.internal.core.BinaryType.getElementInfo(BinaryType.java:286)
      at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:241)
      at org.eclipse.jdt.internal.core.BinaryType.isInterface(BinaryType.java:723)
      at org.eclipse.jdt.internal.corext.refactoring.rename.RippleMethodFinder2.findAllRippleMethods(RippleMethodFinder2.java:242)
      at org.eclipse.jdt.internal.corext.refactoring.rename.RippleMethodFinder2.getAllRippleMethods(RippleMethodFinder2.java:168)
      at org.eclipse.jdt.internal.corext.refactoring.rename.RippleMethodFinder2.getRelatedMethods(RippleMethodFinder2.java:161)
      at
      

      To reproduce this error:

      1. install Eclipse Clover plugin, create new Java project, enable Clover on the project

      2. add reference to clover.jar /lib/clover.jar (project properties > java build path > libraries > add external jars > /path/to/clover-ant/3.1.11/lib/clover.jar)

      3. add class:

      public class KeyValuePair {
      
      private String _key;
      private String _value;
      
      public KeyValuePair(String key, String value)
      { _key = key; _value = value; }
      
      public String getKey()
      { return _key; }
      
      public void setKey(String key)
      { _key = key; }
      
      public String getName()
      { return _value; }
      
      public void setValue(String value)
      { _value = value; }
      
      }
      

      4. Try to rename getName()

            [CLOV-1370] Code refactoring in Eclipse fails when clover.jar is added in classpath

            It seems that during code refactoring Eclipse searches for possible references to the method being renamed.

            It fails to scan clover.jar or clover-runtime.jar. It fails to scan classes in a package named:

            clover.org.apache.commons.lang.enum

            Please note that 'enum' is a reserved Java keyword since JDK5. The commons-lang library has two packages having the same set of classes:

            • org.apache.commons.lang.enum -> it's deprecated
            • org.apache.commons.lang.enums

            When I have deleted the 'clover.org.apache.commons.lang.enum' package from clover.jar and clover-runtime.jar (Clover does not use these classes), the problem in Eclipse has disappeared.

            Marek Parfianowicz added a comment - It seems that during code refactoring Eclipse searches for possible references to the method being renamed. It fails to scan clover.jar or clover-runtime.jar. It fails to scan classes in a package named: clover.org.apache.commons.lang.enum Please note that 'enum' is a reserved Java keyword since JDK5. The commons-lang library has two packages having the same set of classes: org.apache.commons.lang.enum -> it's deprecated org.apache.commons.lang.enums When I have deleted the 'clover.org.apache.commons.lang.enum' package from clover.jar and clover-runtime.jar (Clover does not use these classes), the problem in Eclipse has disappeared.

              mparfianowicz Marek Parfianowicz
              mparfianowicz Marek Parfianowicz
              Affected customers:
              0 This affects my team
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: