java - 在 java 1.7.0_45 中向 HashMap 添加元素会导致 ArrayIndexOutofBoundsException

标签 java hashmap hashset

在我的应用程序中,我有一些代码以最经典的方式将元素放入 HasSet 中:

@OneToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
@XmlElementWrapper
private Set<ParameterDefinition> parameterDefinitions = new HashSet<ParameterDefinition>();

// .... in a method far below ...
    this.parameterDefinitions.add(createParameterDefinitionFor);

此代码已使用两年,从未出现任何失败的迹象。

但是,我们最近将代码库移至 java 7(时机成熟)。而且,自该移动以来,这条精确指令仅*在我们使用 Suse 10 和 Java 1.7.0_45 的 Linux 机器上失败,并出现以下堆栈跟踪。

  Daemon Thread [p: thread-pool-1; w: 9] (Suspended (exception java.lang.ArrayIndexOutOfBoundsException))   
        java.util.HashMap<K,V>.put(K, V) line: 498  
        java.util.HashSet<E>.add(E) line: 217   

在任何 Java 7 版本的 Windows 上运行测试都不会暴露该行为。

那么......出现这种奇怪行为有什么原因吗?

最佳答案

你在使用Glassfish吗?在这种情况下,很可能是这个问题:https://java.net/jira/browse/GLASSFISH-20814

关于java - 在 java 1.7.0_45 中向 HashMap 添加元素会导致 ArrayIndexOutofBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25182159/

相关文章:

java - 按值对 Map<Key, Value> 进行排序

c++ - unordered_map - 与自定义指针键一起使用的正确方法

java - 如何在Java中实现只存储唯一值的堆栈

HashSet<List<float>> 上的 C# SetEquals 当预期为 true 时为 false

java - spring Bean 创建异常 Error creating bean with name

java - 使用 DecimalFormat 的问题

java - 使用 Java Collections/Map 以编程方式执行 SQL 查询

java - HashMap-java程序问题

java - 如何排除已验证的链接验证?