静态最终字符串字段在运行时为空,仅具有特定值

Ton*_*neo 5 java glassfish jakarta-ee

我正在使用 Java 7 和 GlassFish 4.1.1 创建一个 Java EE Web 项目。我的 IDE 是 NetBeans。

从存储库类重构一些代码时,我将字符串“USERS”替换为模型类上的静态最终字段。立即执行此操作(清理并构建)后,我的服务中出现了 IllegalArgumentException,并发现该字段被读取为 null。

模型类:

public class User {

    public static final String TABLE_NAME = "USERS";
    public static final String PRIMARY_KEY = "ID";

    private String id;    
    private String name;

    public User(String id, String name) {
        this.id = id;
        this.name = name;
    }

}
Run Code Online (Sandbox Code Playgroud)

用户存储库,之前:

public List<User> get() throws RepositoryException
{
    try {
        return service.retrieve("USERS");
    } catch (SQLException ex) {
        throw new RepositoryException("Retrieval failed.", ex);
    }
}
Run Code Online (Sandbox Code Playgroud)

用户存储库,之后:

public List<User> get() throws RepositoryException
{
    try {
        return service.retrieve(User.TABLE_NAME);
    } catch (SQLException ex) {
        throw new RepositoryException("Retrieval failed.", ex);
    }
}
Run Code Online (Sandbox Code Playgroud)

可能对此最奇怪的事情(但也许很有启发性?)是,如果我更改字段的值,问题就会消失。

// This works!
public static final String TABLE_NAME = "USERSS";
Run Code Online (Sandbox Code Playgroud)

当然,现在 TABLE_NAME 的值是错误的。

这是我尝试过的:

  • 寻找编译错误(没有)
  • 清洁和构建
  • 从 GlassFish 取消部署,然后重新部署
  • 重新启动 NetBeans
  • 使该领域不是最终的
  • 谷歌

任何帮助深表感谢!:)