这个问题在这里已经有答案了:
注解属性requestmapping.value的值必须是常量表达式(2个答案)
6年前关门了。
我的问题与发布的不同:
注解属性的值必须是常量表达式或
注解属性min.value的值必须是常量表达式
我已经成功了 final
以及 static
但它还是给了我在上面徘徊的错误。
这是我的密码:
登录.java
@FindBy(xpath = Constants.user_email)
public static WebElement user_email;
常量.java
public static final String user_email= CONFIG.getProperty("user_email");
我试图解决的是:我改变了这个 public static Properties CONFIG = new Properties();
为了这个 public static final Properties CONFIG = new Properties();
1条答案
按热度按时间dz6r00yl1#
注解元素值必须可由编译器在编译时解析。这还不够
user_email
如果是静态final,则其值必须是编译时常量,即字符串文字或常量表达式的串联。表达式CONFIG.getProperty("user_email")
在运行时之前不可解析,因此不能将其用于注解值。java语言规范中给出了“常量表达式”的确切定义:
编译时常量表达式是一个表示基元类型的值或字符串的表达式,该值或字符串不会突然完成,并且只使用以下内容组成:
[...]
限定名(§6.5.6.2)的格式。引用常量变量的标识符(§4.12.4).
其中“常量变量”是“原语类型或字符串类型的变量,它是最终的,并用编译时常量表达式初始化”
(是的,这些定义是循环的,在字符串的情况下,您最终必须在引用的字符串文本或连接一系列其他常量表达式的表达式处打底)。