К сожалению, это не сработало, потому что Lombok предоставляет эту функцию путем взаимодействия с компилятором Java и изменения способа его работы, а также внесения некоторых изменений, специфичных для каждой IDE.
Кажется, единственный способ, которым это будет работать, - это внести свой вклад в проект Lombok, а также принять код.
Чтобы решить эту проблему, я попробовал следующие способы:
- Включение обработки аннотаций как в Eclipse, так и в интегрированных средах разработки Intellij.
- Использование одной и той же версии JDK.
Использование одной и той же версии JDK.
Включение обработки аннотаций как в Eclipse, так и в Intellij IDE. - Использование одной и той же версии JDK.
- p>
- Настройка annotationProcessorPaths в pom.xml.
public void clickGoogleSearchBtn() {
googleSearchBtn.click();
}
Вот мой код:
package com.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//Annotation to generate click method for WebElement fields
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.FIELD)
public @interface ClickElement {
}
package com.annotations.processors;
import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.Messager;
import javax.annotation.processing.ProcessingEnvironment;
import javax.annotation.processing.Processor;
import javax.annotation.processing.RoundEnvironment;
import javax.annotation.processing.SupportedAnnotationTypes;
import javax.annotation.processing.SupportedSourceVersion;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
import javax.tools.Diagnostic;
import com.annotations.ClickElement;
import com.google.auto.service.AutoService;
import com.sun.tools.javac.api.JavacTrees;
import com.sun.tools.javac.code.Flags;
import com.sun.tools.javac.code.TypeTag;
import com.sun.tools.javac.processing.JavacProcessingEnvironment;
import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.tree.TreeMaker;
import com.sun.tools.javac.util.Context;
import com.sun.tools.javac.util.List;
import com.sun.tools.javac.util.Name;
import com.sun.tools.javac.util.Names;
@SupportedAnnotationTypes("com.automationdemo1.annotations.ClickElement")
@SupportedSourceVersion(SourceVersion.RELEASE_21)
@AutoService(Processor.class)
public class ClickMethodProcessor extends AbstractProcessor {
private Messager messager;
private JavacTrees javacTrees;
private TreeMaker treeMaker;
private Names names;
@Override
public synchronized void init(ProcessingEnvironment processingEnv) {
messager.printMessage(Diagnostic.Kind.NOTE, "Hello");
// Pass the wrapped ProcessingEnvironment object to the super method.
super.init(processingEnv);
// If you need access to the original ProcessingEnvironment for JavacTrees
if (processingEnv instanceof JavacProcessingEnvironment) {
JavacProcessingEnvironment javacProcessingEnv = (JavacProcessingEnvironment) processingEnv;
this.javacTrees = JavacTrees.instance(javacProcessingEnv);
} else {
// Fallback for non-Javac environments
this.javacTrees = JavacTrees.instance(processingEnv);
}
Context context = ((JavacProcessingEnvironment) processingEnv).getContext();
this.treeMaker = TreeMaker.instance(context);
this.names = Names.instance(context);
this.messager = processingEnv.getMessager();
messager.printMessage(Diagnostic.Kind.NOTE, "Annotation processor initialized with JavacTrees.");
}
@Override
public boolean process(Set
Подробнее здесь: https://stackoverflow.com/questions/791 ... npolicy-so