gpt4 book ai didi

Server 2008 r2 环境中的 Java StringIndexOutOfBounds 异常

转载 作者:可可西里 更新时间:2023-11-01 10:27:04 26 4
gpt4 key购买 nike

这是一个非常简单的代码块,使用 jre 1.6 运行时环境并在 64 位服务器 Server 2008 R2 中运行: ....

        cntr = 0;
while (cntr < localheaders.size()) {
String tempText = textstring.toUpperCase();
int pos = 0;
int lastindx = 0;
int lendPos;
int tendPos = 0;
while ((pos > -1) && (tempText.length() > 0)) {
int headerLengthbeforeUpper = localheaders.get(cntr).header.length();
String aHeader = localheaders.get(cntr).header.toUpperCase();
int headerLengthafterUpper = aHeader.length();
pos = tempText.indexOf(aHeader);
// 10_21_2010
if (pos > 0) { // ef 07-10-2011
char c;
try {
c = tempText.charAt(pos - 1);
if (Character.isLetterOrDigit(c))
pos = -1;
} catch (Exception e) {
System.out.println("Value of pos->" + pos);
System.out.println("Length of the string->"
+ tempText.length());
System.out.println("header length before->"+headerLengthbeforeUpper);
System.out.println("header length after->"+headerLengthafterUpper);
e.printStackTrace();
}

}
........

我发现的是声明 pos = tempText.toUpperCase().indexOf(aHeader);(大约 10 行)间歇性地设置为字符串 tempText 中大于字符串长度的值。这会导致 java.lang.StringIndexOutOfBoundsException。索引始终在字符串实际长度的 100 以内。例如,在我今晚运行的测试中,对于长度为 24404 的字符串,pos 变量被设置为 24432。 header 长度在大写前后相同,以解决下面的评论之一。请注意,如果我连续两次在同一个文件上重新运行代码,则第二次不会发生错误。

一些附加信息:

  1. 我认为这不是线程问题,因为只使用了一个线程。
  2. 代码在 32 位 XP 环境中运行良好。
  3. pos 和tempText 都是本地定义的变量。
  4. 当我键入 java -version 时,我看到以下内容:

Java version "1.6.0_20" Jav(TM) SE Runtime Environment (build 1.6.0_20-b02) Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)

测试环境在 VMware Workstation 中运行。

我认为这是一个环境问题,给出错误的奇怪之处以及它只出现在我的 64 位测试环境中的事实。我试图找出问题的根源。有没有人,过去有过这种错误?是否有人知道与此特定 Java 构建相关的可能导致此类错误的错误?

关于如何解决这个问题有什么想法吗?

谢谢,

埃利奥特

最佳答案

看起来这个错误可能与您的问题有关:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6942326

关于Server 2008 r2 环境中的 Java StringIndexOutOfBounds 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12908192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com