这个字符串越界问题如何解决啊?

joyceme 2006-03-07 05:46:47
Error #: 2301 : internal compiler error: java.lang.StringIndexOutOfBoundsException: String index out of range: 28924

JBuilder9中编译某个jsp文件,报这个错
本来程序都已经通过了,结果在正编译的时候忽然死机,再重起之后再编译就报这个错误了
我找了以前备份的文件来测试,编译可以通过,再加上一段后来写的就不行了,把加的这些注释掉,再编译,还是报这个错误!

这到底是为什么啊?无奈了!
快来救我!
...全文
180 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
syp1979 2006-03-08
程序代码本身没问题. internal compiler errors是说编译的内在错误.就是说你的代码太长了.jb9其实也是java程序啊.他运行的错误.28924可能是或jb9内在的规定每一个jsp文件页的编辑过程中,长度不能超过28924个数字.是妹妹吧.
回复
joyceme 2006-03-07
郁闷得很,把代码重新从记事本里粘贴复制了一遍,好了!
回复
joyceme 2006-03-07
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,datainput.*,java.io.*,java.lang.*,java.util.*" errorPage="" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%!String trans(String chi)
{ String result=null;
byte temp[];
try
{ temp=chi.getBytes("iso-8859-1");
result=new String(temp);
}
catch (Exception e)
{ System.out.println(e.toString());
}
return result;
}
%>
<script language="javascript">
function checkLiter()
{ if (form1.LiterName.value == "")
{ window.alert("请填写文献名称!");
return false;
}
else{
window.open("about:blank","zhutong", 'menubar=0,width=350,height=240,left=230,top=200,resizable=0,scrollbars=auto');
window.form1.target = "zhutong";
window.form1.action = "LiterNameConfirm.jsp";
window.form1.submit();
}
}
function register()
{window.form1.target = "";
window.form1.action = "httpUpload.jsp";
window.form1.submit();
}
</script>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body>
<% String strUserName = trans(request.getParameter("UserName"));
session.setAttribute("UserName",strUserName);

Calendar cal=Calendar.getInstance();
String strYearNow = String.valueOf(cal.get(Calendar.YEAR));
String strMonthNow = String.valueOf(cal.get(Calendar.MONTH));
%>
<form action="httpUpload.jsp" method="post" name="form1">
<table>
<tr>
<td colspan="3">当前登录用户为<%=strUserName%>
</td>
</tr>
<tr>

<td colspan="3">请输入文献名<input name="LiterName" type="text"><input name="" type="button" value="查看该文献是否存在" onClick="checkLiter();return false;"></td>
</tr>
<tr>
<td>请选择日期
<select name = "year1" size = "1">
<% int i = 0;
for (i = 1980; i <= cal.get(Calendar.YEAR); i++){
if ( i == cal.get(Calendar.YEAR)){
out.println("<option value="+"'"+String.valueOf(i)+"'"+" selected>"+String.valueOf(i)+"</option>");
}
else {out.println("<option value="+"'"+String.valueOf(i)+"'"+">"+String.valueOf(i)+"</option>");
}
}
%>
</select>年
<select name = "month1" size = "1">
<%
for (i = 1; i <= 12; i++){
if ( i == (cal.get(Calendar.MONTH)+1) ){
out.println("<option value="+"'"+String.valueOf(i)+"'"+" selected>"+String.valueOf(i)+"</option>");
}
else {out.println("<option value="+"'"+String.valueOf(i)+"'"+">"+String.valueOf(i)+"</option>");
}
}
%>
</select>月
<select name = "day1" size = "1">
<%
for (i = 1; i <= 31; i++){
if ( i == cal.get(Calendar.DATE) ){
out.println("<option value="+"'"+String.valueOf(i)+"'"+" selected>"+String.valueOf(i)+"</option>");
}
else {out.println("<option value="+"'"+String.valueOf(i)+"'"+">"+String.valueOf(i)+"</option>");
}
}
%>
</select>日
</td>
<td>请选择文件格式<select name="FileFormat">
<%
fromdb fd = new fromdb();
Collection res = new ArrayList();
Iterator it = res.iterator();
res = fd.getFileType();
it = res.iterator();

while (it.hasNext()){
WordFileTypeInfo temp = (WordFileTypeInfo)it.next();
out.println("<option value="+temp.getCode()+">"+temp.getChnName()+"</option>");
}

%>
</select>
</td>
<td>
<input name="" type="submit" value="提交" onClick="register();return false;">
</td>
</tr>

</table>
</form>
</body>
</html>

这就是我全部代码了,请大家帮我看看吧!
回复
interpb 2006-03-07
28924 说的很清楚

String 只有28924 长
回复
interpb 2006-03-07
不是数组 是你的对一个String取某几位的时候得越界错误

看看有没有类似subString()的方法
回复
joyceme 2006-03-07
呜呜,我整个jsp都没有用到过数组
楼上的帮我想想看,还有没有别的可能?
关键是我把新加的代码注释掉了也不行啊,是不是因为jb正在运行的时候死机,jb就给坏掉了?
回复
chongsoft 2006-03-07
可能你定义的数组下标出界了
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2006-03-07 05:46
社区公告
暂无公告