• 关于

    java 文件浏览

    的搜索结果

问题

java读取本地的html文件并且将其样式原样的显示在浏览器中

小旋风柴进 2019-12-01 20:17:17 2433 浏览量 回答数 1

问题

url连接问题

一坨翔 2019-12-01 19:32:28 1116 浏览量 回答数 1

问题

Java后台如何根据路径地址下载文件?

蛮大人123 2019-12-01 20:17:18 2203 浏览量 回答数 1

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

学生动手场景应用,快速了解并掌握云服务器的各种新奇玩法!

问题

类似SVN在线浏览文件的功能如何实现?

a123456678 2019-12-01 20:21:55 1126 浏览量 回答数 1

问题

关于eclipse中配置tomcat的问题

蛮大人123 2019-12-01 20:04:31 908 浏览量 回答数 1

问题

ImageIO.read -> Error reading PNG image data:报错

kun坤 2020-06-07 14:24:10 0 浏览量 回答数 1

问题

video标签用自己写的文件流在ios的safari里播不了?报错

爱吃鱼的程序员 2020-06-06 15:49:18 0 浏览量 回答数 1

问题

如何取消KindEditor浏览服务器文件请求参数附加的随机数? 400 报错

爱吃鱼的程序员 2020-06-22 23:14:30 0 浏览量 回答数 1

问题

如何取消KindEditor浏览服务器文件请求参数附加的随机数? 400 报错

爱吃鱼的程序员 2020-06-02 16:52:04 0 浏览量 回答数 1

回答

Re怎么用阿里云服务器安装配置java虚拟机和tomcat服务器 一、安装java虚拟机 执行命令:yum install java 安装结束,检查是否成功 执行命令:java -version 二、安装tomcat 执行命令 yum install tomcat 安装成功,启动tomcat 执行命令:tomcat start 打开防火墙默认端口8080 三、添加项目 1.在目录 /usr/share/tomcat/webapps添加服务器默认根目录ROOT 2,通过ftp将项目文件上传到ROOT目录下 rh test.html 3、远程访问 在浏览器中输入 ip:8080/test.html 至此,java虚拟机和tomcat安装配置结束。

gameover 2019-12-02 00:32:54 0 浏览量 回答数 0

问题

在浏览器中获取textarea的文本值报错,java.lang.IllegalA?报错

爱吃鱼的程序员 2020-06-09 15:59:32 0 浏览量 回答数 1

回答

1.下载JDK与Tomcat. jdk下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html tomcat下载地址: http://tomcat.apache.org/download-70.cgi 2.jdk安装与配置. (1)jdk安装 rpm包: # rpm -ivh jdk-7u55-linux-x64.rpm tar.gz包:解压缩 # mkdir /usr/java # cd /usr/java # tar -zxvf /software/jdk-7u55-linux-x64.tar.gz 生成链接以便版本升级 # ln -s jdk1.7.0_55 latest # ln -s latest default (2)配置环境变量 # vi /etc/profile export JAVA_HOME=/usr/java/default export JAVA_BIN=$JAVA_HOME/bin export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH 使配置生效 # source /etc/profile 测试jdk. # java -version java version "1.7.0_55" Java(TM) SE Runtime Environment (build 1.7.0_55-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.55-b03, mixed mode) 3.Tomcat的安装 解压缩 # mkdir /usr/local/tomcat # cd /usr/local/tomcat # tar -zxvf /software/apache-tomcat-7.0.54.tar.gz 生成链接以便版本升级 # ln -s apache-tomcat-7.0.54 server 启动Tomcat # cd /usr/local/tomcat/server/bin # ./startup.sh Using CATALINA_BASE: /usr/local/tomcat/server Using CATALINA_HOME: /usr/local/tomcat/server Using CATALINA_TEMDIR: /usr/local/tomcat/server/temp Using JRE_HOME: /usr/java/default Using CLASS_PATH: /usr/local/tomcat/server/bin/bootstrap.jar:/usr/local/tomcat/server/bin/tomcat-juli.jar Tomcat started. 测试Tomcat: 打开防火墙,使外部能访问 # /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT # service iptables save # service iptables restart 或直接修改文件/etc/sysconfig/iptables. # vi /etc/sysconfig/iptables -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT # service iptables restart 在浏览器输入: http://192.168.16.133:8080 如在本机可以输入: http://localhost:8080 出现tomcat的页面表示安装成功. 停止Tomcat # ./shutdown.sh 4.配置web管理帐号 修改文件conf/tomcat-users.xml,在<tomcat-users>元素中添加帐号密码,需要指定角色. # vi /usr/local/tomcat/server/conf/tomcat-users.xml <tomcat-users> <user name="admin" password="admin" roles="admin-gui,manager-gui" /> </tomcat-users> 5.配置web访问端口 可以修改conf目录下的文件server.xml,修改Connector元素(Tomcat的默认端口是8080),需要重新启动Tomcat服务生效. # vi /usr/local/tomcat/server/conf/server.xml <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 6.配置https安全连接(ssl加密连接) https连接需要用到数字证书与数字签名(MD5算法) 网站https连接首先需要申请数字证书,配置加密连接器,浏览器安装证书. ·使用java的工具keytool产生数字证书 # keytool -genkey -alias tomcat -keyalg RSA 生成文件.keystore 注意:CN为主机名称,本机可用localhost ·将文件.keystore放到Tomcat服务器的conf目录下 # cp .keystore /usr/local/tomcat/server/conf/ ·修改conf/server.xml文件,修改加密连接器,添加keystoreFile与keystorePass <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="conf/.keystore" keystorePass="123456"/> ·重新启动tomcat.浏览器输入 https://localhost:8443访问,并安装证书. 7.Tomcat的目录结构 ·bin //存放Tomcat的命令脚本文件 ·conf //存放Tomcat服务器的各种配置文件,最主要是server.xml ·lib //存放Tomcat服务器支撑jar包 ·logs //存放日志文件 ·temp //存放临时文件 ·webapps //web应用所在目录,外界访问web资源的存放目录 ·work //Tomcat的工作目录 8.web应用的目录结构 webapp -- web应用所在目录 |--- html, jsp, css, js文件等 -- 这些文件一般在web应用根目录下,根目录下的文件外界可以直接访问. |--- WEB-INF 目录 -- java类、jar包、web配置文件存在这个目录下,外界无法直接访问,由web服务器负责调用. |--- classes 目录 -- java类 |--- lib 目录 -- java类运行所需要的jar包 |--- web.xml 文件 -- web应用的配置文件 9.虚拟主机的配置 指定虚拟主机名,修改conf/server.xml,添加<host>元素. <host name="hostname.domainname" appBase="/webapps"> <Context path="/webapp" docBase="/webapps/webapp"/> </host> 例: <host name=" www.163.com" appBase="/webapps"> </host> <host name="mail.163.com" appBase="/mailapps"> </host> 须设置DNS解析(host文件或DNS系统). 10.web应用和虚拟目录的映射. 可以修改xml配置文件的<Context>元素来设置web应用和虚拟目录的映射. ·conf/server.xml //在<host>元素下添加<Context path="/webdir" docBase="/webappdir"/>,需要重新启动Tomcat服务生效,不建议使用. ·conf/context.xml //添加<Context>元素所有web应用有效. ·conf/[enginename]/[hostname]/context.xml.default //[enginename]一般是Catalina,主机[hostname]的所有web应用有效. ·conf/[enginename]/[hostname]/ //在目录下任意建一个文件(扩展名xml),文件名即为虚拟目录名.多级目录使用#分割. <Context docBase="/webappdir"/> //缺省值web应用目录可以定义为ROOT.xml,添加<Context docBase="/webappdir"/>,需重新启动Tomcat服务器. ·META-INF/context.xml // 可以将web应用放在webapps目录下让Tomcat服务器自动映射,适用开发环境,实际运用环境中不用自动映射。 如没有修改配置文件,web应用目录为ROOT时则为默认web应用。 11.web应用首页(welcome file)的配置 修改web应用的配置文件: [webapp]/WEB-INF/web.xml <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> “答案来源于网络,供您参考” 希望以上信息可以帮到您!

牧明 2019-12-02 02:17:27 0 浏览量 回答数 0

问题

java编写u盘自启动程序

爵霸 2019-12-01 19:49:15 877 浏览量 回答数 1

问题

java文件中,可否用键盘快速定位光标到某出错位置处?? 400 报错

爱吃鱼的程序员 2020-06-02 17:36:34 0 浏览量 回答数 1

问题

【精品问答合集】Java热门问答

李博 bluemind 2019-12-01 19:41:27 89911 浏览量 回答数 12

问题

sonar6.5使用问题?报错

爱吃鱼的程序员 2020-06-08 11:14:03 0 浏览量 回答数 1

问题

Java的下载文件Servlet,自动更新到chrome【83.0.4103.61 】,文件下载失败

游客4anpo4cenlzz6 2020-05-28 16:34:12 3 浏览量 回答数 0

回答

一、安装JDK和Tomcat1,安装JDK:直接运行jdk-7-windows-i586.exe(相应版本的jdk,这里以jdk-7-windows-i586.exe为例)可执行程序,默认安装即可。备注:路径可以其他盘符,不建议路径包含中文名及特殊符号。2、安装Tomcat:直接解压缩下载文件“apache-tomcat-7.0.33-windows-x86.zip”(相应版本的tomcat,这里以apache-tomcat-7.0.33-windows-x86.zip为例)到C盘下。安装路径建议修改为:c:tomcat。备注:如下载的是可执行文件,双击运行,默认安装即可。二、配置JDK环境变量(在步骤查看如何配置环境变量)1,新建变量名:JAVA_HOME,变量值:C:Program FilesJavajdk1.7.0(jdk安装以后对应的安装目录,通过JAVA_HOME来建立jdk的家目录,后面的路径变量会用到)2,打开PATH,添加变量值:%JAVA_HOME%bin;%JAVA_HOME%jrebin3,新建变量名:CLASSPATH,变量值:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar备注:1,.表示当前路径,%JAVA_HOME%就是引用前面指定的JAVA_HOME;2,JAVA_HOME指明JDK安装路径,此路径下包括lib,bin,jre等文件夹,tomcat,eclipse等的运行都需要依靠此变量。3,PATH使得系统可以在任何路径下识别java命令。4,CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别。三、测试JDK在CMD命令下输入javac,java,javadoc命令:出现图示界面,表示安装成功。tomcat如何配置环境变量四、配置Tomcat环境变量1,新建变量名:CATALINA_BASE,变量值:C:tomcat2,新建变量名:CATALINA_HOME,变量值:C:tomcat3,打开PATH,添加变量值:%CATALINA_HOME%lib;%CATALINA_HOME%bin(注意配置完环境变量,要重新打开CMD窗口,不然当前的DOS窗口的环境变量还是之前的,不是新配置的,输入命令startup,依然会提示未识别的命令~)五、启动Tomcat服务方法两种:1,方法一:在CMD命令下输入命令:startup,出现如下对话框,表明服务启动成功。2,方法二:右键点击桌面上的“我的电脑”->“管理”->“服务和应用程序”->“服务”,找到“Apache Tomcat”服务,右键点击该服务,选择“属性”,将“启动类型”由“手动”改成“自动”。tomcat如何配置环境变量六、测试Tomcat打开浏览器,在地址栏中输入http://localhost:8080回车,如果看到Tomcat自带的一个JSP页面,说明你的JDK和Tomcat已搭建成功。tomcat如何配置环境变量

a123456678 2019-12-02 02:02:54 0 浏览量 回答数 0

问题

OSS Web直传问题

正量网 2019-12-01 22:05:29 8387 浏览量 回答数 2

问题

在java中使用ffmpeg的问题

蛮大人123 2019-12-01 19:40:59 1787 浏览量 回答数 1

问题

微信获取获取access_token失败

蛮大人123 2019-12-01 20:03:03 2191 浏览量 回答数 1

问题

java生成pdf格式的图表报表文件

蛮大人123 2019-12-01 19:24:44 2939 浏览量 回答数 1

回答

client.completePendingCommand(); 你这句没加 ######回复 @edwardlu_ : 找到原因了centos版本与vsfftp版本问题 最中文支持不好 ,升级后解决######回复 @红番茄 : 什么意思?这是查看它的返回代码,不是下多个文件啊。你查看ftpClient为什么没有获取到文件######回复 @红番茄 : 使用 getReplyCode(), getReplyString(), getReplyStrings() ,获取一下返回的信息######回复 @edwardlu_ : 不行 我不是一次下载多个文件 跟这个没关系 我是每次下载1个######回复 @红番茄 : http://ly-mad.iteye.com/blog/1180777###### 你最好是贴一下你的代码。不过这种经典问题很多人遇到的,有两个地址,你可以看一下:http://my.oschina.net/zhongwenhao/blog/209653   http://stackoverflow.com/questions/21039471/spring-getoutputstream-has-already-been-called-for-this-response ######下面######/** * 下载行程word * @param request * @param response * @param fileName */ public void downloadTripWord(HttpServletRequest request, HttpServletResponse response, String fileName) { String path = "/word/"; String saveName = ""; InputStream fis = null; BufferedInputStream buff = null; OutputStream os = null; try { login(); ftpClient.changeWorkingDirectory(path); ftpClient.setControlEncoding("gbk"); FTPFile[] fs = ftpClient.listFiles();         for(FTPFile ff:fs){             if(ff.getName().equals(fileName)){              //读出文件到i/o流                               response.setContentType("application/x-msdownload"); if(request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) { saveName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");//firefox浏览器 } else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) { saveName = URLEncoder.encode(fileName, "UTF-8");//IE浏览器 } else if (request.getHeader("User-Agent").indexOf("Trident") > 0) { saveName = URLEncoder.encode(fileName, "UTF-8");//IE浏览器 } response.addHeader("Content-Disposition", "attachment; filename=\"" + saveName + "\"");          fis = ftpClient.retrieveFileStream(ff.getName());        buff = new BufferedInputStream(fis);        byte [] b=new byte[1024];        long k=0;        os = response.getOutputStream();        while(k<ff.getSize()){            int j=buff.read(b,0,1024);            k+=j;            os.write(b,0,j);        }                    }         }  } catch (IOException e) { e.printStackTrace(); } finally{ try { os.flush(); os.close(); buff.close(); fis.close(); ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } } ###### 引用来自“红番茄”的评论/** * 下载行程word * @param request * @param response * @param fileName */ public void downloadTripWord(HttpServletRequest request, HttpServletResponse response, String fileName) { String path = "/word/"; String saveName = ""; InputStream fis = null; BufferedInputStream buff = null; OutputStream os = null; try { login(); ftpClient.changeWorkingDirectory(path); ftpClient.setControlEncoding("gbk"); FTPFile[] fs = ftpClient.listFiles();         for(FTPFile ff:fs){             if(ff.getName().equals(fileName)){              //读出文件到i/o流                               response.setContentType("application/x-msdownload"); if(request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) { saveName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");//firefox浏览器 } else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) { saveName = URLEncoder.encode(fileName, "UTF-8");//IE浏览器 } else if (request.getHeader("User-Agent").indexOf("Trident") > 0) { saveName = URLEncoder.encode(fileName, "UTF-8");//IE浏览器 } response.addHeader("Content-Disposition", "attachment; filename=\"" + saveName + "\"");          fis = ftpClient.retrieveFileStream(ff.getName());        buff = new BufferedInputStream(fis);        byte [] b=new byte[1024];        long k=0;        os = response.getOutputStream();        while(k<ff.getSize()){            int j=buff.read(b,0,1024);            k+=j;            os.write(b,0,j);        }                    }         }  } catch (IOException e) { e.printStackTrace(); } finally{ try { os.flush(); os.close(); buff.close(); fis.close(); ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } } fis = ftpClient.retrieveFileStream(ff.getName());  你确定两次传的文件 ,文件名不相同么,然后调试下是在哪个流关闭的时候报的时候报的异常######回复 @红番茄 : 你的ftpClient不能是全局变量,只能局部变量######回复 @edwardlu_ : 登录方法里new 的 login()######回复 @红番茄 : ftpClient 这个对象你是在哪里定义的,是在哪里进行连接的######下同一个文件就不会错 ,下另一个文件就会出错了,在这出的错 fis = ftpClient.retrieveFileStream(ff.getName()); fis 会 =null######这里你已经在finally中 ftpClient.disconnect 了,你是不是没有重新连接######回复 @edwardlu_ : 是这出的异常 但很多人都说了是response造成的######回复 @红番茄 : 额,你不是在 fis =ftpClient.retrieveFileStream(ff.getName());出的异常么?怎么会是 response啊######不是这个的问题 我每次都重新new 了的 问题应该是response上######回复 @edwardlu_ :  public void login(){ ResourceBundle cfg = ResourceBundle.getBundle("cfg"); ftpClient = new FTPClient(); ftpClient.connect(cfg.getString("ftp.ip"), 52114); ftpClient.login(cfg.getString("ftp.uname"), cfg.getString("ftp.upass")); } ###### 引用来自“edwardlu_”的评论这里你已经在finally中 ftpClient.disconnect 了,你是不是没有重新连接 是因为你的问题中给出了“getOutputStream() has already been called for this response   ”这个异常,如果是这个异常,那确实是response的错,不过他们的异常是:java.lang.IllegalStateException: Stream closed getOutputStream() has already been called for this response ; 而你的是IOException,是不同的,你后面的异常代码可能是由于前一个异常导致的。因此你得先调试,你的调试结果已经确定是在哪个位置出错了,你就只需在前面的代码里面找错了,这个时候的response还没用呢 ######回复 @edwardlu_ : 给你私信######回复 @红番茄 : 这样,你把你的调试日志截张图发下######用了的 我第一次下载正常 第2个文件就错了###### 引用来自“红番茄”的评论回复 @edwardlu_ :  public void login(){ ResourceBundle cfg = ResourceBundle.getBundle("cfg"); ftpClient = new FTPClient(); ftpClient.connect(cfg.getString("ftp.ip"), 52114); ftpClient.login(cfg.getString("ftp.uname"), cfg.getString("ftp.upass")); } 你的登录代码没错,你的登录是每次都会调用,还是只调用了一次######每次下载都很重新登录 下载完后关闭断开###### ######显示的日志记录,控制台的输出也贴一下###### fis = ftpClient.retrieveFileStream(ff.getName()); System.out.println(fis); 第一次打印结果org.apache.commons.net.io.SocketInputStream@f10f8ee 第二次打印结果null java.io.IOException: Stream closed at java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:151) at java.io.BufferedInputStream.fill(BufferedInputStream.java:235) at java.io.BufferedInputStream.read1(BufferedInputStream.java:275) at java.io.BufferedInputStream.read(BufferedInputStream.java:334) at com.trip.common.FTPUploadUtils.downloadTripWord(FTPUploadUtils.java:148) at com.trip.circuit.action.CircuitInfoAction.downloadTrip(CircuitInfoAction.java:501) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) at javax.servlet.http.HttpServlet.service(HttpServlet.java:620) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.trip.common.AuthorityFilter.doFilter(AuthorityFilter.java:140) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.logging.log4j.core.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:66) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:744)

爱吃鱼的程序员 2020-05-29 18:03:53 0 浏览量 回答数 0

回答

client.completePendingCommand(); 你这句没加 ######回复 @edwardlu_ : 找到原因了centos版本与vsfftp版本问题 最中文支持不好 ,升级后解决######回复 @红番茄 : 什么意思?这是查看它的返回代码,不是下多个文件啊。你查看ftpClient为什么没有获取到文件######回复 @红番茄 : 使用 getReplyCode(), getReplyString(), getReplyStrings() ,获取一下返回的信息######回复 @edwardlu_ : 不行 我不是一次下载多个文件 跟这个没关系 我是每次下载1个######回复 @红番茄 : http://ly-mad.iteye.com/blog/1180777###### 你最好是贴一下你的代码。不过这种经典问题很多人遇到的,有两个地址,你可以看一下:http://my.oschina.net/zhongwenhao/blog/209653   http://stackoverflow.com/questions/21039471/spring-getoutputstream-has-already-been-called-for-this-response ######下面######/** * 下载行程word * @param request * @param response * @param fileName */ public void downloadTripWord(HttpServletRequest request, HttpServletResponse response, String fileName) { String path = "/word/"; String saveName = ""; InputStream fis = null; BufferedInputStream buff = null; OutputStream os = null; try { login(); ftpClient.changeWorkingDirectory(path); ftpClient.setControlEncoding("gbk"); FTPFile[] fs = ftpClient.listFiles();         for(FTPFile ff:fs){             if(ff.getName().equals(fileName)){              //读出文件到i/o流                               response.setContentType("application/x-msdownload"); if(request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) { saveName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");//firefox浏览器 } else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) { saveName = URLEncoder.encode(fileName, "UTF-8");//IE浏览器 } else if (request.getHeader("User-Agent").indexOf("Trident") > 0) { saveName = URLEncoder.encode(fileName, "UTF-8");//IE浏览器 } response.addHeader("Content-Disposition", "attachment; filename=\"" + saveName + "\"");          fis = ftpClient.retrieveFileStream(ff.getName());        buff = new BufferedInputStream(fis);        byte [] b=new byte[1024];        long k=0;        os = response.getOutputStream();        while(k<ff.getSize()){            int j=buff.read(b,0,1024);            k+=j;            os.write(b,0,j);        }                    }         }  } catch (IOException e) { e.printStackTrace(); } finally{ try { os.flush(); os.close(); buff.close(); fis.close(); ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } } ###### 引用来自“红番茄”的评论/** * 下载行程word * @param request * @param response * @param fileName */ public void downloadTripWord(HttpServletRequest request, HttpServletResponse response, String fileName) { String path = "/word/"; String saveName = ""; InputStream fis = null; BufferedInputStream buff = null; OutputStream os = null; try { login(); ftpClient.changeWorkingDirectory(path); ftpClient.setControlEncoding("gbk"); FTPFile[] fs = ftpClient.listFiles();         for(FTPFile ff:fs){             if(ff.getName().equals(fileName)){              //读出文件到i/o流                               response.setContentType("application/x-msdownload"); if(request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) { saveName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");//firefox浏览器 } else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) { saveName = URLEncoder.encode(fileName, "UTF-8");//IE浏览器 } else if (request.getHeader("User-Agent").indexOf("Trident") > 0) { saveName = URLEncoder.encode(fileName, "UTF-8");//IE浏览器 } response.addHeader("Content-Disposition", "attachment; filename=\"" + saveName + "\"");          fis = ftpClient.retrieveFileStream(ff.getName());        buff = new BufferedInputStream(fis);        byte [] b=new byte[1024];        long k=0;        os = response.getOutputStream();        while(k<ff.getSize()){            int j=buff.read(b,0,1024);            k+=j;            os.write(b,0,j);        }                    }         }  } catch (IOException e) { e.printStackTrace(); } finally{ try { os.flush(); os.close(); buff.close(); fis.close(); ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } } fis = ftpClient.retrieveFileStream(ff.getName());  你确定两次传的文件 ,文件名不相同么,然后调试下是在哪个流关闭的时候报的时候报的异常######回复 @红番茄 : 你的ftpClient不能是全局变量,只能局部变量######回复 @edwardlu_ : 登录方法里new 的 login()######回复 @红番茄 : ftpClient 这个对象你是在哪里定义的,是在哪里进行连接的######下同一个文件就不会错 ,下另一个文件就会出错了,在这出的错 fis = ftpClient.retrieveFileStream(ff.getName()); fis 会 =null######这里你已经在finally中 ftpClient.disconnect 了,你是不是没有重新连接######回复 @edwardlu_ : 是这出的异常 但很多人都说了是response造成的######回复 @红番茄 : 额,你不是在 fis =ftpClient.retrieveFileStream(ff.getName());出的异常么?怎么会是 response啊######不是这个的问题 我每次都重新new 了的 问题应该是response上######回复 @edwardlu_ :  public void login(){ ResourceBundle cfg = ResourceBundle.getBundle("cfg"); ftpClient = new FTPClient(); ftpClient.connect(cfg.getString("ftp.ip"), 52114); ftpClient.login(cfg.getString("ftp.uname"), cfg.getString("ftp.upass")); } ###### 引用来自“edwardlu_”的评论这里你已经在finally中 ftpClient.disconnect 了,你是不是没有重新连接 是因为你的问题中给出了“getOutputStream() has already been called for this response   ”这个异常,如果是这个异常,那确实是response的错,不过他们的异常是:java.lang.IllegalStateException: Stream closed getOutputStream() has already been called for this response ; 而你的是IOException,是不同的,你后面的异常代码可能是由于前一个异常导致的。因此你得先调试,你的调试结果已经确定是在哪个位置出错了,你就只需在前面的代码里面找错了,这个时候的response还没用呢 ######回复 @edwardlu_ : 给你私信######回复 @红番茄 : 这样,你把你的调试日志截张图发下######用了的 我第一次下载正常 第2个文件就错了###### 引用来自“红番茄”的评论回复 @edwardlu_ :  public void login(){ ResourceBundle cfg = ResourceBundle.getBundle("cfg"); ftpClient = new FTPClient(); ftpClient.connect(cfg.getString("ftp.ip"), 52114); ftpClient.login(cfg.getString("ftp.uname"), cfg.getString("ftp.upass")); } 你的登录代码没错,你的登录是每次都会调用,还是只调用了一次######每次下载都很重新登录 下载完后关闭断开###### ######显示的日志记录,控制台的输出也贴一下###### fis = ftpClient.retrieveFileStream(ff.getName()); System.out.println(fis); 第一次打印结果org.apache.commons.net.io.SocketInputStream@f10f8ee 第二次打印结果null java.io.IOException: Stream closed at java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:151) at java.io.BufferedInputStream.fill(BufferedInputStream.java:235) at java.io.BufferedInputStream.read1(BufferedInputStream.java:275) at java.io.BufferedInputStream.read(BufferedInputStream.java:334) at com.trip.common.FTPUploadUtils.downloadTripWord(FTPUploadUtils.java:148) at com.trip.circuit.action.CircuitInfoAction.downloadTrip(CircuitInfoAction.java:501) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) at javax.servlet.http.HttpServlet.service(HttpServlet.java:620) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.trip.common.AuthorityFilter.doFilter(AuthorityFilter.java:140) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.logging.log4j.core.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:66) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:744)

优选2 2020-06-05 12:01:05 0 浏览量 回答数 0

回答

client.completePendingCommand(); 你这句没加 ######回复 @edwardlu_ : 找到原因了centos版本与vsfftp版本问题 最中文支持不好 ,升级后解决######回复 @红番茄 : 什么意思?这是查看它的返回代码,不是下多个文件啊。你查看ftpClient为什么没有获取到文件######回复 @红番茄 : 使用 getReplyCode(), getReplyString(), getReplyStrings() ,获取一下返回的信息######回复 @edwardlu_ : 不行 我不是一次下载多个文件 跟这个没关系 我是每次下载1个######回复 @红番茄 : http://ly-mad.iteye.com/blog/1180777###### 你最好是贴一下你的代码。不过这种经典问题很多人遇到的,有两个地址,你可以看一下:http://my.oschina.net/zhongwenhao/blog/209653   http://stackoverflow.com/questions/21039471/spring-getoutputstream-has-already-been-called-for-this-response ######下面######/** * 下载行程word * @param request * @param response * @param fileName */ public void downloadTripWord(HttpServletRequest request, HttpServletResponse response, String fileName) { String path = "/word/"; String saveName = ""; InputStream fis = null; BufferedInputStream buff = null; OutputStream os = null; try { login(); ftpClient.changeWorkingDirectory(path); ftpClient.setControlEncoding("gbk"); FTPFile[] fs = ftpClient.listFiles();         for(FTPFile ff:fs){             if(ff.getName().equals(fileName)){              //读出文件到i/o流                               response.setContentType("application/x-msdownload"); if(request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) { saveName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");//firefox浏览器 } else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) { saveName = URLEncoder.encode(fileName, "UTF-8");//IE浏览器 } else if (request.getHeader("User-Agent").indexOf("Trident") > 0) { saveName = URLEncoder.encode(fileName, "UTF-8");//IE浏览器 } response.addHeader("Content-Disposition", "attachment; filename=\"" + saveName + "\"");          fis = ftpClient.retrieveFileStream(ff.getName());        buff = new BufferedInputStream(fis);        byte [] b=new byte[1024];        long k=0;        os = response.getOutputStream();        while(k<ff.getSize()){            int j=buff.read(b,0,1024);            k+=j;            os.write(b,0,j);        }                    }         }  } catch (IOException e) { e.printStackTrace(); } finally{ try { os.flush(); os.close(); buff.close(); fis.close(); ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } } ###### 引用来自“红番茄”的评论/** * 下载行程word * @param request * @param response * @param fileName */ public void downloadTripWord(HttpServletRequest request, HttpServletResponse response, String fileName) { String path = "/word/"; String saveName = ""; InputStream fis = null; BufferedInputStream buff = null; OutputStream os = null; try { login(); ftpClient.changeWorkingDirectory(path); ftpClient.setControlEncoding("gbk"); FTPFile[] fs = ftpClient.listFiles();         for(FTPFile ff:fs){             if(ff.getName().equals(fileName)){              //读出文件到i/o流                               response.setContentType("application/x-msdownload"); if(request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) { saveName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");//firefox浏览器 } else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) { saveName = URLEncoder.encode(fileName, "UTF-8");//IE浏览器 } else if (request.getHeader("User-Agent").indexOf("Trident") > 0) { saveName = URLEncoder.encode(fileName, "UTF-8");//IE浏览器 } response.addHeader("Content-Disposition", "attachment; filename=\"" + saveName + "\"");          fis = ftpClient.retrieveFileStream(ff.getName());        buff = new BufferedInputStream(fis);        byte [] b=new byte[1024];        long k=0;        os = response.getOutputStream();        while(k<ff.getSize()){            int j=buff.read(b,0,1024);            k+=j;            os.write(b,0,j);        }                    }         }  } catch (IOException e) { e.printStackTrace(); } finally{ try { os.flush(); os.close(); buff.close(); fis.close(); ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } } fis = ftpClient.retrieveFileStream(ff.getName());  你确定两次传的文件 ,文件名不相同么,然后调试下是在哪个流关闭的时候报的时候报的异常######回复 @红番茄 : 你的ftpClient不能是全局变量,只能局部变量######回复 @edwardlu_ : 登录方法里new 的 login()######回复 @红番茄 : ftpClient 这个对象你是在哪里定义的,是在哪里进行连接的######下同一个文件就不会错 ,下另一个文件就会出错了,在这出的错 fis = ftpClient.retrieveFileStream(ff.getName()); fis 会 =null######这里你已经在finally中 ftpClient.disconnect 了,你是不是没有重新连接######回复 @edwardlu_ : 是这出的异常 但很多人都说了是response造成的######回复 @红番茄 : 额,你不是在 fis =ftpClient.retrieveFileStream(ff.getName());出的异常么?怎么会是 response啊######不是这个的问题 我每次都重新new 了的 问题应该是response上######回复 @edwardlu_ :  public void login(){ ResourceBundle cfg = ResourceBundle.getBundle("cfg"); ftpClient = new FTPClient(); ftpClient.connect(cfg.getString("ftp.ip"), 52114); ftpClient.login(cfg.getString("ftp.uname"), cfg.getString("ftp.upass")); } ###### 引用来自“edwardlu_”的评论这里你已经在finally中 ftpClient.disconnect 了,你是不是没有重新连接 是因为你的问题中给出了“getOutputStream() has already been called for this response   ”这个异常,如果是这个异常,那确实是response的错,不过他们的异常是:java.lang.IllegalStateException: Stream closed getOutputStream() has already been called for this response ; 而你的是IOException,是不同的,你后面的异常代码可能是由于前一个异常导致的。因此你得先调试,你的调试结果已经确定是在哪个位置出错了,你就只需在前面的代码里面找错了,这个时候的response还没用呢 ######回复 @edwardlu_ : 给你私信######回复 @红番茄 : 这样,你把你的调试日志截张图发下######用了的 我第一次下载正常 第2个文件就错了###### 引用来自“红番茄”的评论回复 @edwardlu_ :  public void login(){ ResourceBundle cfg = ResourceBundle.getBundle("cfg"); ftpClient = new FTPClient(); ftpClient.connect(cfg.getString("ftp.ip"), 52114); ftpClient.login(cfg.getString("ftp.uname"), cfg.getString("ftp.upass")); } 你的登录代码没错,你的登录是每次都会调用,还是只调用了一次######每次下载都很重新登录 下载完后关闭断开###### ######显示的日志记录,控制台的输出也贴一下###### fis = ftpClient.retrieveFileStream(ff.getName()); System.out.println(fis); 第一次打印结果org.apache.commons.net.io.SocketInputStream@f10f8ee 第二次打印结果null java.io.IOException: Stream closed at java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:151) at java.io.BufferedInputStream.fill(BufferedInputStream.java:235) at java.io.BufferedInputStream.read1(BufferedInputStream.java:275) at java.io.BufferedInputStream.read(BufferedInputStream.java:334) at com.trip.common.FTPUploadUtils.downloadTripWord(FTPUploadUtils.java:148) at com.trip.circuit.action.CircuitInfoAction.downloadTrip(CircuitInfoAction.java:501) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) at javax.servlet.http.HttpServlet.service(HttpServlet.java:620) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.trip.common.AuthorityFilter.doFilter(AuthorityFilter.java:140) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.logging.log4j.core.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:66) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:744)

爱吃鱼的程序员 2020-06-02 13:17:28 0 浏览量 回答数 0

回答

一、运行环境的配置 ◆ JDK的配置 从java.sun.com 网站上下载JDK,注意是要Linux平台的。 这里我下的是jdk-6u20-linux-i586.bin,不是RPM的包。 在终端用root身份操作,将jdk-6u20-linux-i586.bin文件复制到/opt 下面,复制时使用命令 #cp XX /opt/ 提权操作,使用命令 #chmod a+x jdk-6u20-linux-i586.bin 然后 #./jdk-6u20-linux-i586.bin。按空格阅读用户协议,最后输入”yes”来继续安装。 设置环境变量 在最后面加入 如果只有当前用户使用JDK, vi /etc/profile set java environment JAVA_HOME=/opt/jdk1.6.0_20 CLASSPATH=.JAVA_HOME/lib.tools.jar PATH=$JAVA_HOME/binPATH export JAVA_HOME CLASSPATH PATH 保存退出。 要使JDK在所有的用户中使用,可以这样: vi /etc/profile.d/java.sh 在新的java.sh中输入以下内容: set java environment JAVA_HOME=/opt/jdk1.6.0_20 CLASSPATH=.JAVA_HOME/lib/tools.jar PATH=$JAVA_HOME/binPATH export JAVA_HOME CLASSPATH PATH 保存退出,然后给java.sh分配权限:#chmod 755 /etc/profile.d/java.sh 检查环境变量是否配置成功 echo $JAVA_HOME echo $CLASSPATH echo $PATH 检查JDK是否安装成功。 java –version 如果看到JVM版本及相关信息,即安装成功! ◆ TOMCAT的配置 下载Tomcat 从网站http://tomcat.apache.org/ 下载Tomcat,如apache-tomcat-5.5.29.tar.gz 解压文件 使用解压命令# tar zxvf apache-tomcat-5.5.29.tar.gz 为了方便,将生成的文件修改为tomcat-5.5.29 mv apache-tomcat-5.5.29 tomcat-5.5.29 将文件拷贝到/opt/文件夹下 #cp –R tomcat-5.5.29 /opt/ 设置环境变量 #vi /etc/profile/ 在文件末尾加入 #set tomcat environment export JAVA_HOME=/opt/jdk1.6.0_20 export CLASSPATH=$JAVA_HOME/lib/dt.jarJAVA_HOME/lib/tools.jar:. export CATALINA_HOME=/opt/ tomcat-5.5.29 export PATH=$JAVA_HOME/binPATH 使用命令#source /etc/profile 让修改后的文件立即生效。 启动和关闭tomcat #cd /opt/ tomcat-5.5.29/bin 启动tomcat服务 #./startup.sh 打开浏览器 http://localhost:8080,看是否安装成功。 关闭tomcat服务 #./shutdwon.sh ◆ Mysql据库.sql文件导入导出 1. sql文件导出: 先用cmd到mysql的bin目录下: 如: 1) E:\program files\MySQL\MySQL Server 5.0\bin>下 2) E:\program files\MySQL\MySQL Server 5.0\bin>mysqldump -u root -p userurl>links.sql 3) Enter password:123456 4) 会自动在E:\program files\MySQL\MySQL Server 5.0\bin>---------目录下生成links.sql文件 sql文件导入: C:\mysql\bin>mysql -u 用户名 -p 数据库名 < c:/test.sql (source " c:\adsense.sql" ) 中间的空格是一个空格位。 例如: var\lib\mysql>mysql -u root -p info < c:/myro.sql Enter password: **** 稍等一会,就可以导入数据表。 二、操作中遇到的问题 ◆ 数据库方面 在将.sql文件执行导入到info数据库的时候可能会报出如下错误: ERROR 1045 (28000):Access denied for user 'root'@'localhost' (using password:YES) 解决办法: # service mysqld stop # mysqld_safe --user=mysql --skip-grant-tables --skip-networking & # mysql -u root mysql mysql> UPDATE user SET Password=PASSWORD('123') where USER='root'; mysql> FLUSH PRIVILEGES; mysql> quit # service mysqld start # mysql -uroot -p Enter password: <输入新设的密码123> mysql> ② 在将.sql文件导入到info数据库时可能会报如下错误: ERROR 1005 (HY000) at line 25: Can't create table './info/category.frm' (errno: 121) 此错误的原因是自己以前测试时建过info数据库,当时删除时是通过手动直接删除/var/lib/mysql中info数据库。这样做以为是没多大问题,实际上没有删除完全。 解决办法: 再次创建一个info数据库,然后通过命令行执行删除drop database info; ③ 登陆mysql数据库时可能会报如下错误: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 解决办法: 启动mysql的守护进程,执行service mysqld start就行了 ④ mysql数据库表名大小写敏感问题: 解决办法: 用root登录,修改/etc/my.cnf 在[mysqld]下加一行:lower_case_table_names=1 重启数据库 ⑤ 数据库乱码问题: 解决办法: ⅰ、 MYSQL创建数据库时候直接指定编码和排序规则: UTF8:create database `info`default character set utf8 collate utf8_general_ci; ⅱ、 改变系统默认字符集,改变如下: etc/my.cnf中[mysqld]字段后加入如下语句default-character-set=gb2312 ◆ tomcat方面 ① tomcat的server.xml配置问题: 当appBase指向info项目时tomcat无法正常启动。 解决办法: 将sever.xml中的配置修改如下: <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="/opt/tomcat-5.5.29/project/info" debug="0" reloadable="true" ></Context> ....... ② Tomcat中连接池的配置问题: <Context> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> <Resource auth="Container" name="jdbc/DBD" type="javax.sql.DataSource" password="" driverClassName="org.gjt.mm.mysql.Driver" maxIdle="2" maxWait="5000" username="root url="jdbc:mysql://localhost:3306/info?useUnicode=true&amp;characterSetResults=UTF-8" maxActive="8" removeAbandoned="true" removeAbandonedTimeout="10" logAbandoned="true" /> 三、环境配置存放目录明细 ① jdk : 放在/opt/jdk1.6.0_20目录下 ② tomcat:放在/opt/tomcat-5.5.29目录下 ③ mysql: /var/lib/mysql -- 数据库目录 /usr/bin/mysql -- mysqladmin mysqldump等命令 /etc/rc.d/init.d -- 启动脚本文件mysql的目录 /usr/share/mysql -- mysql.server命令及配置文件 四、启动、关闭服务的命令 ① 启动mysql服务: service mysqld start 关闭mysql服务: service mysqld stop ② 启动tomcat服务:先进入/opt/tomcat-5.5.29/bin 执行 ./startup.sh 关闭tomcat服务:先进入/opt/tomcat-5.5.29/bin 执行 ./shutdown.sh

hiekay 2019-12-02 01:39:26 0 浏览量 回答数 0

问题

实例部署web项目,tomcat能启动,但是无法访问

1543567685000836 2019-12-01 19:00:55 66 浏览量 回答数 1

问题

tomcat安装

冯熙贻 2019-12-01 21:47:00 579 浏览量 回答数 0

问题

Stream上传插件怎么整合OOS,上传大文件到OOS服务器?

theiamioc 2019-12-01 21:56:19 2146 浏览量 回答数 1

问题

如何取消KindEditor浏览服务器文件请求参数附加的随机数 400 请求出错 

黄一刀 2020-05-29 19:53:00 0 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站