问题描述
上课:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.border.EmptyBorder;
import javafx.application.Platform;
import javafx.beans.value.changelistener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Worker.State;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
public class Test {
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokelater(new Runnable() {
public void run() {
try {
Test test = new Test("https://login.live.com");
test.frame.setVisible(true);
} catch (Exception e) {
e.printstacktrace();
}
}
});
}
private JFrame frame;
public Test(String urlPath) {
frame = new JFrame();
frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(100,100,600,400);
JFXPanel jfxp = new JFXPanel();
jfxp.setBorder(new EmptyBorder(5,6,6));
frame.getContentPane().add(jfxp,BorderLayout.CENTER);
frame.setBackground(Color.white);
Platform.runLater(new Runnable() {
@Override
public void run() {
WebView webView = new WebView();
final WebEngine webEngine = webView.getEngine();
webEngine.load(urlPath);
webEngine.getLoadWorker().stateproperty().addListener(new changelistener<State>()
{
public void changed(ObservableValue<? extends State> ov,State oldState,State newState)
{
if (newState == State.SUCCEEDED)
{
String location = webEngine.getLocation();
System.out.println(location);
frame.setTitle(webEngine.getTitle());
}
}
});
VBox root = new VBox();
root.getChildren().add(webView);
Scene scene = new Scene(root);
jfxp.setScene(scene);
}
});
}
}
还有处理器:
@MarkerForKapt
@AnotherAnnotation(withParameter = "X")
class MyClass
如何从
class MyProcessor : AbstractProcessor() {
override fun getSupportedAnnotationTypes() = setof(MarkerForKapt::class.qualifiedname)
override fun process(annotations: Set<TypeElement>,roundEnv: RoundEnvironment): Boolean {
val element = roundEnv.getElementsAnnotatedWith(MarkerForKapt::class.java).single()
}
}
读取值"X"
?
解决方法
将rt.jar添加到配置:
build.gradle.kts
:
implementation(files("${System.getProperty("java.home")}/../lib/tools.jar"))
处理器:
import com.sun.tools.javac.code.Symbol
override fun process(annotations: Set<TypeElement>,roundEnv: RoundEnvironment): Boolean {
val element = roundEnv.getElementsAnnotatedWith(MarkerForKapt::class.java).single()
element as Symbol.ClassSymbol
val annotation: AnotherAnnotation? = element.getAnnotation(AnotherAnnotation::class.java)
val theX = annotation?.withParameter
}