Java:构造Locale对象时NullPointerException引起的ExceptionInInitializerError

2024-03-13

我正在为我和其他几个人编写的程序进行本地化。大多数字符串现在以适当的语言从 ini 文件加载。我正在尝试对程序中的货币格式执行相同的操作。但是,当我尝试启动应用程序时,我就会收到运行时异常。

我使用 Locale 对象作为一些 NumberFormat.getCurrencyInstance() 的参数,如下所示:

private static final NumberFormat decf;
static 
{
    decf = NumberFormat.getCurrencyInstance(Lang.cLocale);
    decf.setRoundingMode(RoundingMode.HALF_UP);
}

Lang 是包含所有本地化内容的类。 IDE 在尝试运行时抱怨的代码是public static Locale cLocale = new Locale(GUI.DB_info[19],GUI.DB_info[20]);

GUI 是包含 GUI 的类,我们决定在其中构造 DB_info 数组(它本身只包含从另一个类中的远程数据库加载的信息)。 DB_info[19] 是语言代码(现在是),DB_info[20] 是国家代码(美国)。数组元素正在被正确填充——或者说,我现在无法深入了解程序来判断;但填充 DB_info 的代码没有任何改变。

完整的异常如下:

Exception in thread "main" java.lang.ExceptionInInitializerError
at greetingCard.GUI.<clinit>(GUI.java:118)
Caused by: java.lang.NullPointerException
at java.util.Locale.<init>(Unknown Source)
at java.util.Locale.<init>(Unknown Source)
at greetingCard.Lang.<clinit>(Lang.java:13)
... 1 more

GUI 中引用的行是:static String welcome = Lang.L_WELCOME + ", " + empName;,而 Lang.java 基本上看起来像这样:

// Set locale for currency display
public static Locale cLocale = new Locale(GUI.DB_info[19],GUI.DB_info[20]); // language, country

// Employee specific strings
public static String L_AMT_REMAIN = "";
public static String L_AMT_TEND = "";
public static String L_APPROVED = "";
public static String L_ARE_YOU_SURE = "";
[...]

public static void Main(String emp_lang)
{
    String header = "";

    if (emp_lang.equals("ENG"))
    {
        header = "ENG";
    }
    else if (emp_lang.equals("SPA"))
    {
        header = "SPA";
    }
    else if (emp_lang.equals("FRE"))
    {
        header = "FRE";
    }
    else if (emp_lang.equals("GER"))
    {
        header = "GER";
    }
    else
    {
        header = "ENG";
    }

    try 
    {
        Ini ini = new Ini(new File("C:/lang.ini"));

        L_AMT_REMAIN = ini.get(header, "L_AMT_REMAIN");
        L_AMT_TEND = ini.get(header, "L_AMT_TEND");
        L_APPROVED = ini.get(header, "L_APPROVED");
        L_ARE_YOU_SURE = ini.get(header, "L_ARE_YOU_SURE");
                    [...]
                                L_WELCOME = ini.get(header, "L_WELCOME");
        L_WELCOME2 = ini.get(header, "L_WELCOME2");
        L_XACT_CHNG = ini.get(header, "L_XACT_CHNG");  
        L_YES = ini.get(header, "L_YES");

        System.err.println("Employee Language: " + header);
    } 
    catch (InvalidFileFormatException e) 
    {
        e.printStackTrace();
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    }
} // end public static void main

这是为了让大多数字符串以不同的语言显示。 Lang 内部还有另一个方法可以加载一些其他字符串,独立于第一个集合。我不认为它会影响这个问题,但如果需要的话我可以发布它。

这些类/方法的启动顺序如下: GUI.Main 调用 Login 类,该类调用 CreateLogin 方法。该方法调用 Clients.main,后者从传递给它的 GUI 获取 DB_info 数组。客户端填充 DB_info 数组。然后调用 Lang.other(以获取登录页面的特定于语言的字符串),并创建登录按钮和标签。登录成功后,登录员工的首选语言(从数据库)将传递到 Lang.main 以加载其他字符串(因此 emp_lang 在上面的代码中传递)。

在我添加 Locale 对象的代码之前,所有这些都工作正常。现在我收到 ExceptionInInitializerError 异常。有人知道发生了什么事吗?

顺便说一句,为了从 ini 文件加载,我使用 ini4j。我在谷歌搜索时发现的一些论坛帖子表明这是一个问题,但我不明白它与 Locale 对象的问题有什么关系。 ini 的东西工作得很好。


听起来你的静态初始化器中有一个循环,所以有些东西还没有初始化。

GUI calls Lang获取之前的静态初始值设定项Lang.L_WELCOME. Lang calls GUI第 2 行中的静态初始化程序。您的异常跟踪使其看起来像GUI calls Lang由于某种原因,静态初始化器。

总而言之,像这样的循环意味着有人将引用静态初始化的对象并获得null而不是他们期望得到的。在这种情况下,我怀疑Lang.java,第 2 行,经过两个null指向的指针Locale构造函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java:构造Locale对象时NullPointerException引起的ExceptionInInitializerError 的相关文章

  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url

随机推荐

  • 发送密钥不起作用 selenium webdriver python

    我需要将文本发送到描述文本区域 有一些预定义的文本 单击后会被清除 我尝试在 sendkeys 之前使用 clear 或 click 但没有任何效果正常 它将向那里发送文本 但它仍然是灰色的 并且保存页面后出现错误 说明中没有文本 我可以使
  • 在 Java 中使用 String 和 Object 的 equals() 方法

    Object o1 new Object Object o2 new Object o1 o2 System out println o1 equals o2 它返回false 它可以返回true 如果评论被删除 为什么同样的事情不适用于S
  • 是否可以对我的 iPhone 应用程序进行逆向工程?

    我创建了一个 iPhone 应用程序 我想将编译后的 app 文件发送到我的客户端 以便他可以在他的设备上安装和测试这个 iPhone 应用程序 他是否有可能查看这个 app文件的内容 比如这个应用程序中使用的资源文件 图像 声音文件等 他
  • 在 PDF 中使用 Javascript 列出 XFA 对象的属性

    我正在尝试创建一个包含多个文本字段的 PDF 文档 这些文本字段的高度可以增长到某个最大值 由于项目的限制 我使用的是 Adob e Designer 7 它很高兴允许使用 Javascript 然而 XFA 中的对象与 HTML DOM
  • 验证不适用于 EntityManager.merge()

    我对我的实体几乎没有验证 例如 NotNull 还有一些一代人 比如 Id GeneratedValue strategy AUTO Column name ID private Long id Column GeneratedValue
  • 如何通过 CloudFront 将对象放入 S3

    我想通过 CloudFront 将图像上传到 S3 如果你看到关于CloudFront的文档 你可以发现cloud front提供了put方法来上传到cloudFront 可能会有人问我为什么使用云端上传到S3 如果你搜索一下 你就能找到解
  • 运算符和操作数的排列算法

    我在一个面试网站上看到了这个问题 我们有 4 个数字 即 n1 n2 n3 n4 我们可以将它们放置在任何 顺序 我们可以在它们之间使用数学运算符 最终结果为 24 为此编写一个算法 需要 4 个数字并返回 false 或 true 最终结
  • Eclipse 给出错误,最近更新后缺少 R.java 文件

    我已经更新了我的SDK and ADT到最新版本 我也更新了Eclipse to Kepler最新一篇之后Juno My ADT版本是22 0 在此更新之后 当我创建新项目时 出现错误 指出R cannot be resolved to a
  • 编写一个http嗅探器

    我想编写一个程序来通过数据包捕获提取系统访问的网站的 URL IP 地址 我认为该 URL 将出现在数据部分中 即不在任何标头中 ethernet ip tcp udp 此类程序有时称为http嗅探器 我不应该使用任何可用的工具 作为初学者
  • 无法解析 IntelliJ Idea IDE 中的符号 javafx.application

    我尝试创建一个JavaFXIntelliJ Idea IDE 中的应用程序 但我收到编译错误 java 包 javafx application 不存在 我已将项目 SDK 和项目语言级别更改为 Java 8 重新加载项目 但没有帮助 然后
  • 如何给 TriangleMesh 中的一些三角形着色?

    我想用不同的颜色为 TriangleMesh 的一些三角形着色 最简单的方法是什么 甚至可以在 fxml 文件中实现 java代码 import javafx application Application import javafx fx
  • 以最小尺寸分割字符串

    我正在编写一个 python 脚本 它将接受点分隔的版本号 它将把这个字符串分成单独的部分 使用句点 作为分隔符 我的脚本最多支持 4 个组件 例如1 2 3 4 然而 用户可以指定less or more组件数量超过 4 个 我的脚本需要
  • 在 Bootstrap 3 导航栏上使用 NAV 和 DIV 有什么区别?

    在最新的 Bootstrap 3 导航栏的示例中 我在网络上找到了各种示例 其中外部导航栏标记是 div class navbar navbar default navbar static top div 和其他例子正在使用
  • Clang:错误:非静态数据成员的使用无效

    这个 gcc 是否过于友善并且做了开发人员认为它会做的事情 或者 clang 对某些事情过于挑剔 我是否遗漏了标准中的一些微妙规则 其中 clang 对此的抱怨实际上是正确的 或者我应该使用第二位代码 这基本上就是 offsetof 的工作
  • 如何在 Java 中将文件路径列表转换为 Hireachial 树

    有人可以给我一些建议吗 我想要获取文件路径列表 只是字符串 并转换为类似层次树的结构 因此有两个任务 解析字符串以创建树 以及创建树或某种映射结构以实际将结果放入其中 第三个任务是解析树以在 html 中显示为树 我使用的是 Java 7
  • Laravel中保存模型时直接设置ID和设置eloquent关联关系有什么区别?

    我有两张桌子 employees and employee types employees有以下字段 id PK 员工类型 ID 外籍 name and employee type有以下字段 id PK title 我雄辩的模型函数是 Em
  • GLSL 版本变更日志?

    我可以在哪里阅读有关 GLSL 从版本 1 1 到 1 2 以及从 1 2 到 1 3 所做的更改和添加的信息吗 谷歌似乎对此不知所措 我真的不想开始阅读完整的规范 1 3版 http www opengl org registry doc
  • 无法将类型字符串用作 sql.NullString

    我正在创建一个gorm model Day is a corresponding day entry type Day struct gorm Model Dateday string json dateday gorm type date
  • 带约束的 Psql COPY 失败

    我在服务器中有一个这样的表 CREATE TABLE example table id BIGSERIAL PRIMARY KEY name VARCHAR 70 NOT NULL status VARCHAR 70 NOT NULL CO
  • Java:构造Locale对象时NullPointerException引起的ExceptionInInitializerError

    我正在为我和其他几个人编写的程序进行本地化 大多数字符串现在以适当的语言从 ini 文件加载 我正在尝试对程序中的货币格式执行相同的操作 但是 当我尝试启动应用程序时 我就会收到运行时异常 我使用 Locale 对象作为一些 NumberF