如何在JShell中使用Lombok注释?
我试过了
* jshell --class-path lombok.jar
jshell> import lombok.*
jshell> @Data class Person { String name; String address; }
| created class Person
jshell> new Person()
$3 ==> Person@6f7fd0e6
jshell> $3.setName("Hi")
| Error:
| cannot find symbol
| symbol: method setName(java.lang.String)
| $3.setName("Hi")
| ^--------^发布于 2022-10-16 03:42:32
恐怕行不通。JShell不支持注释处理器,因为要使Lombok注释按照您的预期工作,就需要这样做。
请参阅JDK-8213600 - JShell编译没有考虑到隆布克的注释处理器。
有关解决方法,请参见https://stackoverflow.com/a/74084467/139985或bug报告本身。
基本上,您需要在jshell之外编译Lombok代码,然后将编译的类导入到jshell会话中。
发布于 2022-10-16 03:45:33
目前不可能像这个错误报告所描述的那样。
这里提到的解决方法是在外部编译您的类。为此,您基本上必须遵循以下步骤:
com/example。Person类放在该目录下。package com.example;
import lombok.*;
@Data
public class Person {
private String name;
private int age;
}javac -cp lombok.jar com/example/Person.java jar -cf person.jar com/jshell --class-path "person.jar:lombok.jar"Person> import com.example.*;
> var p = new Person();还请注意,JShell不能访问默认包中的类(如描述的这里),这就是为什么我们将Person放在com.example中。
https://stackoverflow.com/questions/74084364
复制相似问题