Compilation error for annotations in Java using maven-compiler-plugin 2.5.1 with java 1.8 and netbeans

13,678

Solution 1

Thanks a lot bigdestroyer for your time and help. I already found where the bug was. It was in pom.xml file. My structure was:

<project>
    [...]
    <dependencies>.... some dependencies ...</dependencies>
    <properties>.... some properties ...</properties>
    <profiles>
        <profile>
            <build>
                <plugins>
                    <plugin>
                        ... plugins & settings ...

But there were problem with tags <profiles> and <profile>. I removed them and it works like a charm now.

So my working pom.xml now looks like:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>sk.lieskove301.jianghongtiao</groupId>
    <artifactId>MotionAnalyser</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <dependencies>
        ...dependencies...
    </dependencies>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <!-- Disable annotation processing for ourselves.-->
                    <compilerArgument>-proc:none</compilerArgument>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Solution 2

The problem seems to be in this instruction:

<compilerArgument>-proc:none</compilerArgument>

OP's answer has that line in Maven configuration, but he doesn't mention its importance.

I, too, tried to write an annotation processor and compile it with Maven. Addinng the line did the trick.

Share:
13,678
JiangHongTiao
Author by

JiangHongTiao

I was born in ambulance...

Updated on July 22, 2022

Comments

  • JiangHongTiao
    JiangHongTiao almost 2 years

    I'm newborn in writing anotations in Java. I was trying to write my own following this tutorial: Playing with Java annotation processing

    I wrote everything like it is there, but during compilation I'm getting an error:

    Bad service configuration file javax.annotation.processing.Processor Provider <my class> not found.
    

    I'm using netbeans and maven with plugin maven-compiler-plugin v. 2.5.1. and java sources v.1.8.

    In my pom.xml file I have (like suggested in page) following code:

    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>2.5.1</version>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <!-- Disable annotation processing for ourselves. -->
        <compilerArgument>-proc:none</compilerArgument>
      </configuration>
    </plugin>
    

    My OS is Linux (leatest ubuntu) and maven is that one integrated in Netbeans.

    I was trying to google it, but nothing helped me. All tutorials were for older release of plugin and Java. I tried older release of maven-compiler-plugin but with no effect. I cannot switch to older version of java because of new features introduced in Java 8.

    Thanks a lot for any pointing me how to fix it.

    Edit:

    Here is full list of my sources:

    Config.java

    @Retention(RetentionPolicy.SOURCE)
    @Target(value = {ElementType.FIELD, ElementType.LOCAL_VARIABLE, ElementType.PARAMETER})
    public @interface Config {
        String name();
        String type();
        String defaultValue();
    }
    

    ConfigAnnotationProcessor.java

    @SupportedAnnotationTypes(
            {"sk.lieskove301.jianghongtiao.motionanalyser.config.ConfigAnnotations"}
    )
    public class ConfigAnnotationProcessor extends AbstractProcessor {
    
        @Override
        public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment env) {
            Messager messager = processingEnv.getMessager();
            annotations.stream().forEach((te) -> {
                env.getElementsAnnotatedWith(te).stream().forEach((e) -> {
                    messager.printMessage(Diagnostic.Kind.NOTE,
                            "Printing: " + e.toString());
                });
            });
            return true;
        }
    
        @Override
        public SourceVersion getSupportedSourceVersion() {
            return SourceVersion.latestSupported();
        }
    }
    

    META-INF/services/javax.annotation.processing.Processor

    sk.lieskove301.jianghongtiao.motionanalyser.config.ConfigAnnotationProcessor
    

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>sk.lieskove301.jianghongtiao</groupId>
        <artifactId>MotionAnalyser</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>jar</packaging>
        <dependencies>
            .... some dependencies ...
        </dependencies>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties>
        <profiles>
            <profile>
                <build>
                    <plugins>
                        <plugin>
                            <artifactId>maven-compiler-plugin</artifactId>
                            <version>2.5.1</version>
                            <configuration>
                                <source>1.8</source>
                                <target>1.8</target>
                                <!-- Disable annotation processing for ourselves.-->
                                <compilerArgument>-proc:none</compilerArgument> 
                            </configuration>
                        </plugin>
                    </plugins>
                </build>
            </profile>
        </profiles>
    </project>
    

    And this is log of my compiler:

    cd /home/xjuraj/Dropbox/Work/MotionAnalyser; JAVA_HOME=/usr/lib/jvm/java-8-oracle /usr/local/netbeans-8.0/java/maven/bin/mvn clean install
    Scanning for projects...
    
    ------------------------------------------------------------------------
    Building MotionAnalyser 1.0-SNAPSHOT
    ------------------------------------------------------------------------
    
    --- maven-clean-plugin:2.4.1:clean (default-clean) @ MotionAnalyser ---
    Deleting /home/xjuraj/Dropbox/Work/MotionAnalyser/target
    
    --- maven-resources-plugin:2.5:resources (default-resources) @ MotionAnalyser ---
    [debug] execute contextualize
    Using 'UTF-8' encoding to copy filtered resources.
    Copying 6 resources
    
    --- maven-compiler-plugin:2.3.2:compile (default-compile) @ MotionAnalyser ---
    Compiling 27 source files to /home/xjuraj/Dropbox/Work/MotionAnalyser/target/classes
    -------------------------------------------------------------
    COMPILATION ERROR : 
    -------------------------------------------------------------
    error: Bad service configuration file, or exception thrown while constructing Processor object: javax.annotation.processing.Processor: Provider sk.lieskove301.jianghongtiao.motionanalyser.config.ConfigAnnotationProcessor not found
    1 error
    -------------------------------------------------------------
    ------------------------------------------------------------------------
    BUILD FAILURE
    ------------------------------------------------------------------------
    Total time: 1.661s
    Finished at: Mon Aug 11 19:56:16 CEST 2014
    Final Memory: 12M/180M
    ------------------------------------------------------------------------
    Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project MotionAnalyser: Compilation failure
    error: Bad service configuration file, or exception thrown while constructing Processor object: javax.annotation.processing.Processor: Provider sk.lieskove301.jianghongtiao.motionanalyser.config.ConfigAnnotationProcessor not found
    -> [Help 1]
    
    To see the full stack trace of the errors, re-run Maven with the -e switch.
    Re-run Maven using the -X switch to enable full debug logging.
    
    For more information about the errors and possible solutions, please read the following articles:
    [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
    

    Edit 2 and so on...:

    Screenshot of my environment is here

    Screenshot of my folder structure

    Output of non-integrated maven

    xjuraj@xjuraj-pc:~/Dropbox/Work/MotionAnalyser$ mvn -e package
    + Error stacktraces are turned on.
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Unnamed - sk.lieskove301.jianghongtiao:MotionAnalyser:jar:1.0-SNAPSHOT
    [INFO]    task-segment: [package]
    [INFO] ------------------------------------------------------------------------
    [INFO] [resources:resources {execution: default-resources}]
    [INFO] Using 'UTF-8' encoding to copy filtered resources.
    [INFO] Copying 6 resources
    [INFO] [compiler:compile {execution: default-compile}]
    [INFO] Compiling 27 source files to /home/xjuraj/Dropbox/Work/MotionAnalyser/target/classes
    [INFO] -------------------------------------------------------------
    [ERROR] COMPILATION ERROR : 
    [INFO] -------------------------------------------------------------
    [ERROR] error: Bad service configuration file, or exception thrown while constructing Processor object: javax.annotation.processing.Processor: Provider sk.lieskove301.jianghongtiao.motionanalyser.config.ConfigAnnotationProcessor not found
    [INFO] 1 error
    [INFO] -------------------------------------------------------------
    [INFO] ------------------------------------------------------------------------
    [ERROR] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Compilation failure
    error: Bad service configuration file, or exception thrown while constructing Processor object: javax.annotation.processing.Processor: Provider sk.lieskove301.jianghongtiao.motionanalyser.config.ConfigAnnotationProcessor not found
    
    [INFO] ------------------------------------------------------------------------
    [INFO] Trace
    org.apache.maven.BuildFailureException: Compilation failure
    error: Bad service configuration file, or exception thrown while constructing Processor object: javax.annotation.processing.Processor: Provider sk.lieskove301.jianghongtiao.motionanalyser.config.ConfigAnnotationProcessor not found
    
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:715)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
        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:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        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
    error: Bad service configuration file, or exception thrown while constructing Processor object: javax.annotation.processing.Processor: Provider sk.lieskove301.jianghongtiao.motionanalyser.config.ConfigAnnotationProcessor not found
    
        at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:729)
        at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
        ... 17 more
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 2 seconds
    [INFO] Finished at: Thu Aug 14 15:10:26 CEST 2014
    [INFO] Final Memory: 19M/187M
    [INFO] ------------------------------------------------------------------------
    

    Cheers, juraj

  • user2418306
    user2418306 over 8 years
    project>build>plugins>plugin(maven-compiler-plugin)>configur‌​ation>compilerArgume‌​nt