Guice 3.0 - 启动时出现 ArrayIndexOutOfBoundsException?

2023-11-26

为什么 Guice 3.0 对于错误配置的组件抛出此异常而不是格式化消息(例如缺少 @Inject)?

Exception in thread "main" com.google.inject.internal.util.$ComputationException: java.lang.ArrayIndexOutOfBoundsException: 16640
    at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:553)
    at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:419)
    at com.google.inject.internal.util.$CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2041)
    at com.google.inject.internal.util.$StackTraceElements.forMember(StackTraceElements.java:53)
    at com.google.inject.internal.Errors.formatInjectionPoint(Errors.java:716)
    at com.google.inject.internal.Errors.formatSource(Errors.java:678)
    at com.google.inject.internal.Errors.format(Errors.java:555)
    at com.google.inject.ConfigurationException.getMessage(ConfigurationException.java:70)
    at java.lang.Throwable.getLocalizedMessage(Throwable.java:391)
    at java.lang.Throwable.toString(Throwable.java:480)
    at java.lang.String.valueOf(String.java:2982)
    at java.io.PrintStream.println(PrintStream.java:821)
    at java.lang.Throwable$WrappedPrintStream.println(Throwable.java:748)
    at java.lang.Throwable.printStackTrace(Throwable.java:655)
    at java.lang.Throwable.printStackTrace(Throwable.java:643)
    at java.lang.Throwable.printStackTrace(Throwable.java:634)
    at hu.daniel.hari.exercises.cleanarchitecture.payrollcasestudy.adapters.primary.ui.impl.swing._2.SwingUIMain2.<init>(SwingUIMain2.java:40)
    at hu.daniel.hari.exercises.cleanarchitecture.payrollcasestudy.adapters.primary.ui.impl.swing._2.SwingUIMain2.main(SwingUIMain2.java:17)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 16640
    at com.google.inject.internal.asm.$ClassReader.readClass(Unknown Source)
    at com.google.inject.internal.asm.$ClassReader.accept(Unknown Source)
    at com.google.inject.internal.asm.$ClassReader.accept(Unknown Source)
    at com.google.inject.internal.util.$LineNumbers.<init>(LineNumbers.java:62)
    at com.google.inject.internal.util.$StackTraceElements$1.apply(StackTraceElements.java:36)
    at com.google.inject.internal.util.$StackTraceElements$1.apply(StackTraceElements.java:33)
    at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:549)
    ... 17 more

我的启动代码是:

Injector injector = Guice.createInjector(new SwingUIModule(useCaseFactory));
injector.getInstance(MainFrameUI.class).show();

我们曾经遇到过这个问题并且原来不是Guice 3的问题根本没有(在我们的例子中)。但事实是,由于贫穷Exception在 Guice 3 中处理,我们得到了与作者相同的错误消息。

TL/DR

我们问题的根源是NoClassDefFoundError: Could not initialize class ...抛出的异常static阻止我们的一堂课。

事实证明,我们有excludedfat-jar 构建过程中的类太多,而且只是缺少一些类。不幸的是,对于 Guice 3,我们只收到$ComputationException: java.lang.ArrayIndexOutOfBoundsException: ...留言,帮助我们。

我的观点是,Guice 3 可能不是问题的根源.

完整版

  1. 我们有一个项目 (A),我们将其作为依赖项包含在在 Spark 集群上运行的项目 (B) 中

  2. 项目A,正在使用log4j 2, and spark-hive(在项目 B 中使用)由于某种原因不喜欢它在类路径中具有额外的日志框架,因此我们将其排除在sbt-assembly:

    ExclusionRule(organization = "org.apache.logging.log4j"),
    
  3. 在项目 A 中,我们有一个类,其中包含如下代码 (java):

    static {
        this.defaultMarker = MarkerManager.getMarker("abc")
    }
    

    And MarkerManager来自org.apache.logging.log4j,因此项目 B 的 fat-jar 中缺少该类。

  4. 我们在集群上运行它,其中一些应该是的类@injected使用带有静态块的类。

  5. Boom! $ComputationException: java.lang.ArrayIndexOutOfBoundsException

  6. 我决定手动初始化所​​有类,而不需要Guice却发现并非如此Guice fault.

  7. Fix the ExclusionRuleGuice 3 又可以正常工作了。

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

Guice 3.0 - 启动时出现 ArrayIndexOutOfBoundsException? 的相关文章

随机推荐

  • 如何从长纪元时间(以毫秒为单位)创建 Java 8 LocalDate?

    我有一个外部 API 它返回的日期为longs 表示为自纪元开始以来的毫秒数 使用旧式 Java API 我只需构造一个Date从它与 Date myDate new Date startDateLong Java 8 中的等价物是什么Lo
  • 延迟表达式求值而不使用“quote”

    我创建了以下函数 示例作为在表等中显示变量标签的通用方法 Function to prettify the output of another function using a var labels attribute This is pa
  • 在verilog中使用for循环生成

    我试图理解为什么我们在verilog 中使用generate 和for 循环 一起使用生成和 for 循环 reg 3 0 temp genvar i generate for i 0 i lt 3 i i 1 begin always p
  • jQuery .attr 检索自定义属性返回未定义

    我在使用 jquery 时遇到以下问题 我有这样的东西 div value span class delete span div 现在我有了这个 fn 但它只返回 未定义 但是如果我要求的话 它确实会返回 id 或类 delete clic
  • 以编程方式生成 BPEL 文件?

    有没有一种方法可以在 Java 中以编程方式生成 BPEL 我尝试使用 BPEL Eclipse Designer API 编写以下代码 Process process null try Resource Factory Registry
  • 精确为零的浮点/双精度相等

    我有一个使用的算法floats or doubles执行一些计算 Example double a double b double c double result c b a if result gt 0 result lt small n
  • 使用操作按钮启用和禁用侧边栏切换按钮

    我正在寻找一个代码片段 使用它 我可以启用 禁用闪亮仪表板标题中的侧边栏切换按钮 library shiny library shinydashboard library shinyjs ui lt shinyUI dashboardPag
  • 在Android中创建文件夹[重复]

    这个问题在这里已经有答案了 import java io File File folder new File Environment getExternalStorageDirectory TollCulator boolean succe
  • 我如何知道代码中的哪些部分从未被使用过?

    我有遗留的 C 代码 我应该从中删除未使用的代码 问题是代码库很大 我如何找出哪些代码从未被调用 从未使用过 未使用的代码有两种 本地的 也就是说 在某些函数中 某些路径或变量未使用 或使用但没有任何意义 例如已写入但从未读取 全局对象 从
  • 在rstudio中使用knitr编译pdf时出错

    我已经安装了软件包Sweave也knitr在 Linux mint 和 Windows 7 上都可以运行 并且它在 Windows 上运行良好 但在 Linux 中使用 rstudio 时失败 安装完pkgs后 我写了一个简单的dw Rnw
  • 如何从计数器上删除 Disqus 反应?

    向 Stackoverflow 忍者提出两个问题 我有一个使用 Disqus 的博客 但是 我使用的主题没有空间容纳 反应 Twitter 数量 只有空间容纳评论数量 好的 基本上我没有足够的空间来保留为 Disqus 提供的 反应 有谁知
  • JPanel 中的 Java Linux 终端

    我正在制作一个脚本编辑器 希望能够运行 Bash Shell Python 等 程序中的脚本 到目前为止 我有办法运行它们 但是脚本没有办法让用户输入 这是代码 package com hightide ui terminal import
  • JavaScript 运行时错误:无法添加动态内容

    我正在制作一个 javascript 地铁应用程序 并且有一些如下代码 当我尝试运行时 它给了我一个相当长的错误 ms appx a375ffac 3b69 475a bd53 ee3c1ccf4c4e default html 中第 20
  • 如何制作“只读”文件?

    我正在使用 C StreamWritier班级 问题 如何将文件设置为只读 以便任何人都无法删除或写入它 如何制作隐藏文件 我正在像这样创建文件 private void button1 Click object sender EventA
  • 在 Cucumber Ruby 中使用 Selenium ChromeDriver 在 W3C 模式下无法调用非 W3C 标准命令 (Selenium::WebDriver::Error::UnknownCommandError)

    我们有 Cucumber Ruby 自动化框架 我们在 Jenkins 上的 Docker 中的 Chrome 无头浏览器上运行了一些测试 几天前 我们开始收到错误 此版本的 ChromeDriver 仅支持 Chrome 版本 75 这次
  • DllImport 生成 System.DllNotFoundException

    我在尝试使用非托管代码时遇到一些困难dll来自我的应用程序 用 C 框架 4 0 编写 我正在使用dll导入如下 DllImport C MGW SDK dll EntryPoint fInicializaSDK public static
  • 保持用户登录状态 - FormsAuthentication

    我最难弄清楚这一点 我正在使用表单身份验证 当用户登录并检查记住我时 我希望用户保持登录状态 24 小时 问题是 无论我做什么 用户都会在 30 分钟后自动注销 我们用户选择记住我 我设置了一个持久 cookie 在 24 小时后过期 我可
  • 使用与多个实体管理器的关系

    我想知道是否可以在驻留在不同数据库中的两个实体之间创建关系 例如 如果我们采用此处找到的解决方案http symfony com doc current cookbook doctrine multiple entity managers
  • 将 CSS 插入到 UIWebView / WKWebView 中加载的 HTML 中

    我成功地获取 HTML 内容并显示到我的 UIWebView 中 但想要通过添加外部 CSS 文件来自定义内容 我只能更改文本和字体的大小 我尝试了所有可能的解决方案来进行更改 但它不起作用 它没有显示任何更改 下面是我的代码 HTMLNo
  • Guice 3.0 - 启动时出现 ArrayIndexOutOfBoundsException?

    为什么 Guice 3 0 对于错误配置的组件抛出此异常而不是格式化消息 例如缺少 Inject Exception in thread main com google inject internal util ComputationExc