错误完整的报告如下:
java.lang.IllegalArgumentException
at java.util.zip.ZipInputStream.getUTF8String(ZipInputStream.java:299)
at java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:238)
at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:73)
at cn.qtone.cxyx.cp.pubFun.Decompress.unzip(Decompress.java:55)
at cn.qtone.cxyx.cp.pubFun.Decompress.decompress(Decompress.java:25)
at cn.qtone.cxyx.cp.nrkgl.Content.serviceAction(Content.java:166)
at cn.qtone.cxyx.cp.nrkgl.Content.doGet(Content.java:142)
at cn.qtone.cxyx.cp.nrkgl.Content.doPost(Content.java:408)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:154)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterC
hain.java:106)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain
.java:178)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocatio
n.java:229)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:267
)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:388)
at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:490)
at com.caucho.util.ThreadPool.run(ThreadPool.java:423)
at java.lang.Thread.run(Thread.java:595)在网上也找到了相应的解决办法,但是不成功~~~流汗~~搞了一天了~~~郁闷啊~~~~网上解决方法是:4.新增member,这个member记录编码方式
private String encoding="UTF-8";
5.再新增一个建构式如下(这个建构式可以让这个class在new的时候,设定档名的编码)
public CZipInputStream(InputStream in,String encoding) {
super(new PushbackInputStream(in,512),new Inflater(true),512);
usesDefaultInflater = true;
if(in == null) {
throw new NullPointerException("in is null");
}
this.encoding=encoding;
}6.找到ZipEntry e = createZipEntry(getUTF8String(b, 0, len));这一行,将它改成如下:
ZipEntry e=null;
try
{
if (this.encoding.toUpperCase().equals("UTF-8"))
e=createZipEntry(getUTF8String(b, 0, len));
else
e=createZipEntry(new String(b,0,len,this.encoding));
}
catch(Exception byteE)
{
e=createZipEntry(getUTF8String(b, 0, len));
}
但是,我这边就是不行,在创建对象这一步挂了
resin没有任何提示,也没有执行下面的语句~~~
高手请指教啊
java.lang.IllegalArgumentException
at java.util.zip.ZipInputStream.getUTF8String(ZipInputStream.java:299)
at java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:238)
at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:73)
at cn.qtone.cxyx.cp.pubFun.Decompress.unzip(Decompress.java:55)
at cn.qtone.cxyx.cp.pubFun.Decompress.decompress(Decompress.java:25)
at cn.qtone.cxyx.cp.nrkgl.Content.serviceAction(Content.java:166)
at cn.qtone.cxyx.cp.nrkgl.Content.doGet(Content.java:142)
at cn.qtone.cxyx.cp.nrkgl.Content.doPost(Content.java:408)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:154)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterC
hain.java:106)
at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain
.java:178)
at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocatio
n.java:229)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:267
)
at com.caucho.server.port.TcpConnection.run(TcpConnection.java:388)
at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:490)
at com.caucho.util.ThreadPool.run(ThreadPool.java:423)
at java.lang.Thread.run(Thread.java:595)在网上也找到了相应的解决办法,但是不成功~~~流汗~~搞了一天了~~~郁闷啊~~~~网上解决方法是:4.新增member,这个member记录编码方式
private String encoding="UTF-8";
5.再新增一个建构式如下(这个建构式可以让这个class在new的时候,设定档名的编码)
public CZipInputStream(InputStream in,String encoding) {
super(new PushbackInputStream(in,512),new Inflater(true),512);
usesDefaultInflater = true;
if(in == null) {
throw new NullPointerException("in is null");
}
this.encoding=encoding;
}6.找到ZipEntry e = createZipEntry(getUTF8String(b, 0, len));这一行,将它改成如下:
ZipEntry e=null;
try
{
if (this.encoding.toUpperCase().equals("UTF-8"))
e=createZipEntry(getUTF8String(b, 0, len));
else
e=createZipEntry(new String(b,0,len,this.encoding));
}
catch(Exception byteE)
{
e=createZipEntry(getUTF8String(b, 0, len));
}
但是,我这边就是不行,在创建对象这一步挂了
resin没有任何提示,也没有执行下面的语句~~~
高手请指教啊
解决方案 »
- 请教,怎样取得两个时间的差异?
- 删除记录出现异常?
- 关于在特定时间运行代码的问题
- 多应用模块的Struts应用经常用到吗?
- 怎样将字符串"2006-06-02-11.12.59.407756"这种格式转换为yyyy-MM-dd hh:MM:SS类型的日期格式?
- 怎么从记事本中将数值输入到数组中去
- 真诚求教!-高手看看这个java恢复SQL数据库的一个小小问题(解决给200分)
- 用applet做的基于B/S模式下的实时曲线显示程序(有源码)
- 用jbuilder做的开发如果做成一个.EXE的可执行文件
- 使用java实现串口编程,how to do it
- 精英?
- 新手提问“如何检查字符串是否为合法的Java标识符”?
同事做过用ant压缩再解压缩
但是他在压缩的时候就设置好编码方式的,因此解压缩时不会出错,但是我的是让客户自己压缩再上传的,不能设定压缩的编码方式哪位高手或者前辈有解决过这个问题啊,帮我一下,谢谢呀~~~~~~~~~~~~