I am a newborn in writing annotations in Java. I tried to write my own next tutorial: Game with Java Annotation Processing
I wrote everything as it is, but during compilation I get an error message:
Bad service configuration file javax.annotation.processing.Processor Provider <my class> not found.
I use netbeans and maven with the maven-compiler-plugin v plugin. 2.5.1. and java sources v.1.8.
In my pom.xml file, I have (as suggested on the page) the following code:
<plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> <compilerArgument>-proc:none</compilerArgument> </configuration> </plugin>
My OS is Linux (leatest ubuntu), and maven is the one that is integrated into Netbeans.
I tried to do this, but nothing helped. All tutorials were intended for an older version of the plugin and Java. I tried an older version of maven-compiler-plugin, but with no effect. I cannot switch to an older version of java due to new features introduced in Java 8.
Thanks so much for pointing out how to fix this.
Edit:
Here is a complete 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> <compilerArgument>-proc:none</compilerArgument> </configuration> </plugin> </plugins> </build> </profile> </profiles> </project>
And this is the 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:
Change 2 and so on ... :
Screenshot of my environment here
Screenshot of my folder structure
Non-integrated maven output
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