我正在Java写一个简单的自定义注释,遇到了一个问题。下面是我的代码的主要部分。
日志自定义注释。JAVA
package fun.n.learn.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
// We need this annotation only till before compilation.
@Retention(RetentionPolicy.SOURCE)
// This is a simple custom annotation.
public @interface LogMeCustomAnnotation {
}
LogMeCustomAnnotationProcessor。JAVA
package fun.n.learn.annotation;
import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.Messager;
import javax.annotation.processing.RoundEnvironment;
import javax.annotation.processing.SupportedAnnotationTypes;
import javax.lang.model.element.TypeElement;
import javax.tools.Diagnostic;
// List the custom annotations that are supported.
@SupportedAnnotationTypes({ "fun.n.learn.annotation.LogMeCustomAnnotation" })
// Extend AbstractProcessor. This will let you process.
public class LogMeCustomAnnotationProcessor extends AbstractProcessor {
@Override
public boolean process(Set<? extends TypeElement> annotations,
RoundEnvironment roundEnv) {
Messager messager = processingEnv.getMessager();
messager.printMessage(Diagnostic.Kind.NOTE, "I was here.");
// TODO: Put some meaningful code here. Right now just get it to work.
// return false;
// We have already handled these annotations. No more. So return true.
return true;
}
}
/src/main/resources/META-INF/services/javax.annotation.processing.处理器
fun.n.learn.annotation.LogMeCustomAnnotationProcessor
波姆。xml
<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>fun.n.learn</groupId>
<artifactId>javaCustomAnnotation</artifactId>
<version>0.1.0</version>
<build>
<plugins>
<plugin>
<!-- Configure the project to use java 8 version. -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.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>
现在,当我运行mvn-e清洁安装
时,我得到以下问题
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Bad service configuration file, or exception thrown while constructing Processor object: javax.annotation.processing.Processor: Provider fun.n.learn.annotation.LogMeCustomAnnotationProcessor not found
[INFO] 1 error
我一定错过了一个简单的技巧。有什么帮助吗?
请按照以下步骤解决此问题:
javac.processorpath
,并将其更改为:javac.processorpath =\ ${ javac.classpath }:\ ${ libs.eclipselink.classpath}
好的。找到问题了。早些时候,我的pom.xml已经注释掉了proc:无
行。现在我已经把它恢复运行了,它编译得很好。我需要弄清楚这行到底做了什么,但是我问题的答案是把proc:无
放回游戏中。这就是我pom.xml的构建部分现在的样子。
<build>
<plugins>
<plugin>
<!-- Configure the project to use java 8 version. -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.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>
默认的maven生命周期使用javax运行javac。注释。处理。处理器文件作为类路径的一部分。这会导致编译器期望文件中列出的注释处理器的编译实例。但此时未编译LogMeCustomAnnotationProcessor,所以编译器会引发“错误的服务配置文件…”错误见错误报告为了解决这个问题,maven的编译阶段可以分开,首先编译注释处理器,然后编译整个项目。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
<executions>
<execution>
<id>default-compile</id>
<configuration>
<compilerArgument>-proc:none</compilerArgument>
<includes>
<include>fun/n/learn/annotation/LogMeCustomAnnotationProcessor.java</include>
<!--include dependencies required for LogMeCustomAnnotationProcessor -->
</includes>
</configuration>
</execution>
<execution>
<id>compile-project</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
default compile
执行编译LogMeCustomAnnotationProcessor
时禁用注释处理,以便成功编译编译项目
通过注释处理编译整个项目。
以下是通过javaCompiler taska进行诊断时出现的错误: 我试图动态编译一个简单的java类从文件,使用JavaCompiler。这个类看起来像: 我的项目是Maven项目类型 正如你所看到的,康纳廷的班级没什么特别的。我需要的一件事是从这个类中获取一个类对象。但在运行时。我想编译这个动态类并获取类对象。问题是我正在开发Netbeans平台,我想在这个IDE中实现这一点(我开发了一个简
我在AIX服务器上编译java源代码时出错,编码设置为IBM-1047。下面是错误, [INFO]2018-04-17 09:21:13,272[main]-编译输出消息错误:构造处理器对象时引发的异常:无效索引 [致命]2018-04-17 09:21:13273[main]-错误:构造处理器对象时引发异常:索引无效 如果我删除编码变量,并使用默认编码作为ISO-8859-1编译,我得到下面的错
此代码的输出是 这意味着异常将由<代码>接收器重新引发。下一步(i) 在推送方法和非推送错误反应通道中。为什么?
我正在将本地netty服务器连接到远程https服务器以代理请求。 下面是我如何创建ssLcontext bean 当我点击我的本地主机时,它应该代理到后端。我得到以下异常。但是,如果SSL关闭并且我连接到远程,这是在不同端口上运行的本地服务器,则工作正常 编辑 添加的日志
我正在处理一个Spring启动应用程序。我尝试处理异常。但我想我这样做的方式有问题,因为它总是抛出内部服务器错误500。 我尝试设置自定义异常类,并且还使用带有@响应状态的响应状态代码。但是不管异常是什么,它只会抛出内部服务器错误。我使用的是intellij,我在异常中给出的消息打印在那里,但响应正文empty.This我想一定是因为它抛出了内部服务器错误。 控制器类 intellij 中的终端打
问题内容: 我在页面上有几个更新面板和jquery选项卡。另外,我正在更新面板上加载几个用户控件。用户等待几分钟后(未检查的时间约为40分钟)。当用户从“提交”按钮发送请求时,出现以下错误? 我无法解决此问题。但我相信。这是由Ajax引起的。大师,如果您知道解决方案。请告诉我。 问题答案: 当您有一个控件注册为多个更新面板中时,有时会出现此问题。 如果这不是问题,请尝试在脚本管理器声明之后立即添加