These rules deal with different problems that can occur with a class' import statements.
Avoid duplicate import statements.
This rule is defined by the following Java class: net.sourceforge.pmd.rules.imports.DuplicateImportsRule
Here's an example of code that would trigger this rule:
import java.lang.String;
import java.lang.*;
public class Foo {}
Avoid importing anything from the package 'java.lang'. These classes are automatically imported (JLS 7.5.3).
This rule is defined by the following Java class: net.sourceforge.pmd.rules.imports.DontImportJavaLang
Here's an example of code that would trigger this rule:
// this is bad
import java.lang.String;
public class Foo {}
// --- in another source code file...
// this is bad
import java.lang.*;
public class Foo {}
Avoid unused import statements.
This rule is defined by the following Java class: net.sourceforge.pmd.rules.imports.UnusedImportsRule
Here's an example of code that would trigger this rule:
// this is bad
import java.io.File;
public class Foo {}
No need to import a type that lives in the same package.
This rule is defined by the following Java class: net.sourceforge.pmd.rules.imports.ImportFromSamePackageRule
Here's an example of code that would trigger this rule:
package foo;
import foo.Buz; // no need for this
import foo.*; // or this
public class Bar{}