社区
Web 开发
帖子详情
急急...送分。。关于JSP的错误:java.lang.StringIndexOutOfBoundsException: String index
BlankMe
2003-05-05 01:10:00
在一个FOR循环中,我至少调用了十多个String类型,运行JSP程序有的时候可以执行,
有时出现错误:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
怎样释放String?? 怎样解决这个错误??
...全文
112
7
打赏
收藏
急急...送分。。关于JSP的错误:java.lang.StringIndexOutOfBoundsException: String index
在一个FOR循环中,我至少调用了十多个String类型,运行JSP程序有的时候可以执行, 有时出现错误: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 怎样释放String?? 怎样解决这个错误??
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shidu
2003-05-05
打赏
举报
回复
我认为可能出现问题的地方:
sender=senderAddr.substring(start+1, end);
或者是数组越界了。
shidu
2003-05-05
打赏
举报
回复
调用String的某些方法时候和长度有问题。
BlankMe
2003-05-05
打赏
举报
回复
for(int i=0; i<messages.length; i++)
{
int InboxID=i+InboxMsgTotalNum+1; //要存储的邮件在INBOX的位置
javax.mail.Address[] addr=messages[i].getFrom();
String senderAddr=new String();
senderAddr=addr[0].toString();
senderAddr.trim();
int start=senderAddr.indexOf("<");
int end=senderAddr.indexOf(">");
String sender=new String();
sender=senderAddr.substring(start+1, end); // 获得发送者地址
String subject=new String();
subject=messages[i].getSubject();
Object MsgContent = messages[i].getContent();
MsgContent = messages[i].getContent(); //怎样存储到数据库中?????
//邮件的内容出错:javax.mail.internet.MimeMultipart@4d2197
java.text.Format formatter = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm");
String sendtime=new String();
sendtime=formatter.format(messages[i].getSentDate());
out.println(sendtime);
int size=messages[i].getSize();
//执行数据库插入操作
String ConnInsert =new String();
ConnInsert = "jdbc:odbc:webmail"; //数据源
Connection connectInsert =null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(java.lang.ClassNotFoundException e) {
System.err.println( e.getMessage());
}
try {
//连接数据库
connectInsert = DriverManager.getConnection(ConnInsert,logName,passwd);
Statement stmtInsert = connectInsert.createStatement();
String sqlInsert=new String();
//sqlInsert="insert into INBOX(ID,userID,sender,subject,size)";
//sqlInsert+=" values('"+InboxID+"','"+userID+"','"+sender+"','"+subject+"','"+size+"')";
sqlInsert="insert into INBOX(ID,userID,sender,subject,sendtime,content,size)";
sqlInsert+=" values('"+InboxID+"','"+userID+"','"+sender+"','"+subject+"','"+sendtime+"','"+contents+"','"+size+"')";
stmtInsert.executeUpdate(sqlInsert);
}
catch(SQLException ex) {
System.err.println(ex.getMessage());
}
/****************** 判断是否附件 ************************/
if(messages[i].isMimeType("multipart/*")) //附件
{
FetchProfile fp=new FetchProfile();
fp.add(FetchProfile.Item.ENVELOPE);
fp.add(FetchProfile.Item.FLAGS);
fp.add("X-Mailer");
folder.fetch(messages,fp);
Object content=messages[i].getContent();
Multipart multipart = (Multipart)content;
for (int c=0, n=multipart.getCount(); c<n; c++)
{
Part part = multipart.getBodyPart(c);
//String msg=getStr(part.getContent());
/***StringBuffer buf=new StringBuffer(msg.length()+6);
char ch=' ';
for(int u=0;u<msg.length();u++)
{
ch=msg.charAt(u);
if(ch=='\n')buf.append("");
else buf.append(ch);
}
String mm = buf.toString(); ********/
// out.println(new String(mm.getBytes("iso-8859-1"),"gb2312"));
String disposition = null;
disposition = part.getDisposition();
if ( disposition != null &&(disposition.equals(Part.ATTACHMENT) || disposition.equals(Part.INLINE)))
{
//String fileName=getStr(part.getFileName()); //转换成中文GB2313
String fileName=null,AttachName =new String();
fileName=part.getFileName();
AttachName =fileName; //附件文件名
InputStream inputstream=part.getInputStream();
if(fileName==null)
{
fileName=File.createTempFile("attachment",".out").getName();
}
String filePath=new String();
filePath="c:\\MailAttachment\\"+username+"\\" ; // 存储路径
fileName=filePath+fileName;
File file=new File(fileName);
for(int j=0;file.exists();j++)
{
file=new File(fileName+j);
}
FileOutputStream fileoutputstream =new FileOutputStream(file);
BufferedOutputStream bufferedoutputstream =new BufferedOutputStream(fileoutputstream);
BufferedInputStream bufferedinputstream =new BufferedInputStream(inputstream);
int m;
while ((m=bufferedinputstream.read())!=-1)
bufferedoutputstream.write(m);
//save the filename
String SqlUpdate=new String();
SqlUpdate="UPDATE INBOX SET AttachmentName='"+AttachName+"',AttachmentPath='"+filePath+"' ";
SqlUpdate+="WHERE ID='"+InboxID+"'"; //InboxID
executeUpdateSql(SqlUpdate);
bufferedoutputstream.flush();
bufferedoutputstream.close();
bufferedinputstream.close();
}
}
//out.println("Attachment2");
}
connectInsert.close();
} //FOR 循环结束
hfprogramer
2003-05-05
打赏
举报
回复
超过了字符串的长度了吧。
yoken
2003-05-05
打赏
举报
回复
数组越界
lynx1111
2003-05-05
打赏
举报
回复
贴代码!·
有楼上兄弟在
尽管贴,保证摆平!
Philzzf
2003-05-05
打赏
举报
回复
数组越界了
比如
String[] s = {"1","2","3","4","5"};
System.out.println(s[5]);
这样就错了,编译能通过,但运行时会异常
JAVA
常见异常整理.docx
JAVA
常见异常整理.docx 欢迎大家免费下载
java
异常总结
其他还有很多异常,我就不一一列举了,我要说明的是,一个合格的程序员,需要对程序中常见的问题有相当的了解和相应的解决办法,否则仅仅停留在写程序而不会改程序的话,会极大影响到自己的开发的。关于异常的全部说明,在api里都可以查阅。 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeArrayException 数组下标越界异常:ArrayIndexOutOfBoundsException 违背安全原则异常:SecturityException 文件已结束异常:EOFException 文件未找到异常:FileNotFoundException 字符串转换为数字异常:NumberFormatException 操作数据库异常:SQLException 输入输出异常:IOException
方法
未找到异常:NoSuchMethodException
java
.
lan
g.AbstractMethodError 抽象
方法
错误。当应用试图调用抽象
方法
时
抛出。
java
.
lan
g.AssertionError 断言错。用来指示一个断言失败的情况。
java
.
lan
g.ClassCircularityError 类循环依赖错误。在
初始化
一个类
时
,若检测到类之间循环依赖则抛出该异常。
java
.
lan
g.ClassFormatError 类格式错误。当
Java
虚拟机试图从一个文件中读取
Java
类,而检测到该文件的内容不符合类的有效格式
时
抛出。
java
.
lan
g.Error 错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常情况。
java
.
lan
g.ExceptionInInitializerError
初始化
程序错误。当执行一个类的静态
初始化
程序的过程中,发生了异常
时
抛出。静态
初始化
程序是指直接包含于类中的static语句段。
java
.
lan
g.IllegalAccessError 违法访问错误。当一个应用试图访问、修改某个类的域(Field)或者调用其
方法
,但是又违反域或
方法
的可见性声明,则抛出该异常。
java
.
lan
g.IncompatibleClassChangeError 不兼容的类变化错误。当正在执行的
方法
所依赖的类定义发生了不兼容的改变
时
,抛出该异常。一般在修改了应用中的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下,容易引发该错误。
java
.
lan
g.InstantiationError 实例化错误。当一个应用试图通过
Java
的new操作符构造一个抽象类或者接口
时
抛出该异常.
java
.
lan
g.InternalError 内部错误。用于指示
Java
虚拟机发生了内部错误。
java
.
lan
g.LinkageError 链接错误。该错误及其所有
子类
指示某个类依赖于另外一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发错误的情况。
java
.
lan
g.NoClassDefFoundError 未找到类定义错误。当
Java
虚拟机或者类装载器试图实例化某个类,而找不到该类的定义
时
抛出该错误。
java
.
lan
g.NoSuchFieldError 域不存在错误。当应用试图访问或者修改某类的某个域,而该类的定义中没有该域的定义
时
抛出该错误。
java
.
lan
g.
NoSuchMethodError
方法
不存在错误。当应用试图调用某类的某个
方法
,而该类的定义中没有该
方法
的定义
时
抛出该错误。
java
.
lan
g.OutOfMemoryError 内存不足错误。当可用内存不足以让
Java
虚拟机分配给一个对象
时
抛出该错误。
java
.
lan
g.StackOverflowError 堆栈溢出错误。当一个应用递归调用的层次太深而导致堆栈溢出
时
抛出该错误。
java
.
lan
g.ThreadDeath 线程结束。当调用Thread类的stop
方法
时
抛出该错误,用于指示线程结束。
java
.
lan
g.UnknownError 未知错误。用于指示
Java
虚拟机发生了未知严重错误的情况。
java
.
lan
g.UnsatisfiedLinkError 未满足的链接错误。当
Java
虚拟机未找到某个类的声明为native
方法
的本机语言定义
时
抛出。
java
.
lan
g.UnsupportedClassVersionError 不支持的类版本错误。当
Java
虚拟机试图从读取某个类文件,但是发现该文件的主、次版本号不被当前
Java
java
所有运行
时
异常以及错误.
java
所有运行
时
异常以及错误
java
异常总结.pdf
java
异常总结.pdf
一个
java
.
lan
g.
NoSuchMethodError
问题的解决
据说:当看到异常信息里有
NoSuchMethodError
时
,你应该很高兴,因为这种错误一般是因为jar包冲突引起的。如下面的异常信息。root cause
java
.
lan
g.
NoSuchMethodError
: org.hibernate.hql.antlr.HqlBaseParser.getTokenTypeToASTClassMap()L
java
/util/Hashtable; org.h...
Web 开发
81,122
社区成员
341,744
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章