解决_解决方案 - CSDN
精华内容
参与话题
  • tomcat 404 问题及解决方法

    万次阅读 2019-07-04 14:13:29
    今天就总结一下tomcat 404 的几种常见问题及解决方法。 问题一: 指定目录下没有访问的文件,这是最常见的,也是最容易解决的。只需要将访问的文件(如:a.html)放到指定目录下即可。 问题二: 将访问的...

    昨天晚上用tomcat 实验一个小程序,没想到的是一直提示404错误。我已经确认目录下有我的html文件,但仍然是404。今天就总结一下tomcat 404 的几种常见问题及解决方法。

     

    问题一:

               指定目录下没有访问的文件,这是最常见的,也是最容易解决的。只需要将访问的文件(如:a.html)放到指定目录下即可。

     

    问题二:

             将访问的文件(如:b.html)放到了webapps的根目录下,然后访问http://localhost:8080/b.html,这种方式也会造成404错误,               解决方法是在webapps下新建一个目录(如:test),然后将b.html 放到test目录里面。访问网址  http://localhost:8080/test/b.html

     

    问题三:

             访问的目录下的web.xml 文件内容有误。解放方法是可以直接删除web.xml或写入下面的内容

     

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>ss</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

     

    问题四:

           在win10系统中需要获取系统权限后,才能运行。在bin目录下,右键tomcat7w.exe,【管理员取得所有权】,然后就可以运行。

    如果你是大连的朋友,想参加课下收费课程,可以加我微信 psp0001060

     

     

    展开全文
  • java.lang.IllegalStateException异常产生的原因及解决办法

    万次阅读 多人点赞 2014-02-27 10:35:49
    问题描述: 错误类型大致为以下几种: java.lang.IllegalStateException:Cannot forward a response that is already committed  IllegalStateException:response already commited  ...
    问题描述:
    

    错误类型大致为以下几种:

    java.lang.IllegalStateException:Cannot   forward   a   response   that   is   already   committed 
    IllegalStateException:response already commited 
    IllegalStateException:getOutputStream() has already been called for this request
    …………

     

    错误原因:

                           该异常表示,当前对客户端的响应已经结束,不能在响应已经结束(或说消亡)后再向

                           客户端(实际上是缓冲区)输出任何内容。

    具体分析:

                            首先解释下flush(),我们知道在使用读写流的时候数据先被读入内存这个缓冲区中,

                             然后再写入文件,但是当数据读完时不代表数据已经写入文件完毕,因为可能还有

                             一部分仍未写入文件而留在内存中,这时调用flush()方法就会把缓冲区的数据强行

                             清空输出,因此flush()的作用就是保证缓存清空输出。

                            response是服务端对客户端请求的一个响应,其中封装了响应头、状态码、内容等,

                            服务端在把response提交到客户端之前,会向缓冲区内写入响应头和状态码,然后

                            将所有内容flush。这就标志着该次响应已经committed(提交)。对于当前页面中

                            已经committed(提交)的response,就不能再使用这个response向缓冲区写任何东西

                         (注:同一个页面中的response.XXX()是同一个response的不同方法,只要其中一个

                            已经导致了committed,那么其它类似方式的调用都会导致 IllegalStateException异常)。

    【注意】能够导致响应已经committed的操作包括:forward, redirect, flushBuffer

    JDK API:

             

    flushBuffer

            public void flushBuffer()throws IOException
    Forces any content in the buffer to be written to the client. A call to this method automatically commits the response, meaning the status code and headers will be written.  
               ②
                    

    sendRedirect

             public void sendRedirect(String location)throws IOException
    Sends a temporary redirect response to the client using the specified redirect location URL. This method can accept relative URLs; the servlet container must convert the relative URL to an absolute URL before sending the response to the client. If the location is relative without a leading '/' the container interprets it as relative to the current request URI. If the location is relative with a leading '/' the container interprets it as relative to the servlet container root.

    If the response has already been committed, this method throws an IllegalStateException. After using this method, the response should be considered to be committed and should not be written to.

                ③                

    forward

    public void forward(ServletRequest request,ServletResponse response)
                                 throws ServletException,IOException
    Forwards a request from a servlet to another resource (servlet, JSP file, or HTML file) on the server. This method allows one servlet to do preliminary processing of a request and another resource to generate the response.

    For a RequestDispatcher obtained via getRequestDispatcher(), the ServletRequestobject has its path elements and parameters adjusted to match the path of the target resource.

    forward should be called before the response has been committed to the client (before response body output has been flushed). If the response already has been committed, this method throws anIllegalStateException. Uncommitted output in the response buffer is automatically cleared before the forward.

    The request and response parameters must be either the same objects as were passed to the calling servlet's service method or be subclasses of the ServletRequestWrapper orServletResponseWrapper classes that wrap them.

     

    备    注:

                      在一次响应commit之前,所有的内容输出都将写入servlet引擎的缓冲区(tomcat或

                      weblogic的内容空间), 而在commit之后,上一次response向缓冲区写入的内容,将清空。

                      由于servlet在没有设置单线程的情况下(使用Single-Threaded Model,servlet实现

                      SingleThreadModel接口,jsp使用<%@ page isThreadSafe="false" %>),是多线程的,所以

                      上面所说的缓冲区,都将是该response所属的线程私有的内存空间。有了这个概念,

                      将可以分析碰到的关于servlet多线程的很多问题。

                      如果不能确认response是否已经committed. 可以调用response.isCommitted()来判断。

                      导致这个错误最普遍的原因是,jsp有编译错误。

    常见解决办法:

                     ①在response.sendRedirect()方法后加return语句即可如下:
                           response.sendRedirect("login.jsp");
                           return;
                     检查提交的url是否有误。

                     如果你的页面中用了清缓存代码response.flushbuffer();又用到了response.sendRedirect(url);

                         你可以把response.flushbuffer();去掉,或者用JS的window.location.href="url";来做转向。

                     ④如果你用了OutputStream,而web容器生成的servlet代码中有out.write(””),这个和JSP中调用的

                         response.getOutputStream()冲突。out.write()这个是字符流,而response.getOutputStream()

                        是字节流,你不能在同一个页面中调用多个输出流。无论先调用哪一个,在调用第二个时都会抛出

                          IllegalStateException,因为在jsp中,out变量是通过response.getWriter得到的。在多个使用了

                         outputStream的<%%>语句之间不能有空格及多余的字符。也就是页面中除了使用了

                          outputStream的<%%>之外不能有空格或其它任何字符,在之内的语句可以有空格及回车。

                     在JSP页面做输出的时候有两种方式.一是通过JspWriter,另一个是通过

                     OutputStream,但二者互相排斥.如果并存的话就会报告以上异常.                     

                         在不得不使用OutputStream的时候.我们必须要把JspWriter舍弃掉了。找到

                         请求异常的页面所对应的Servlet..把其中所有使用JspWriter的语句全部去掉.

                         或者是到你的JSP文件里把动态输出的代码注释掉.这里注意换行和空格制表符

                         为JspWriter输出.应该一起去掉.保存文件重新启动服务器你会发现上述异常

                         消失了。                    

             由于jsp container在处理完成请求后会调用releasePageContet方法释放
              所用的PageContext object,并且同时调用getWriter方法,由于getWriter方法
              与在jsp页面中使用流相关的getOutputStream方法冲突,所以会造成这种异常,
             解决办法是:只需要在jsp页面的最后加上两条语句:  
                     out.clear(); 
                     out=pageContext.pushBody();
             即可(其中out,pageContext均为jsp内置对象!) 。
    展开全文
  • 兼容Android 7.0 及8.0 App升级  Android7.0变化点:  出于安全机制的考虑,从安卓7.0开始获取uri的方式改为 Uri apkUri = FileProvider.getUriForFile(mContext, getPackageName() + "...

     兼容Android 7.0 及8.0 App升级

     Android7.0变化点:
     出于安全机制的考虑,从安卓7.0开始获取uri的方式改为

    Uri apkUri = FileProvider.getUriForFile(mContext, getPackageName() + ".fileprovider", appFile);

    Android7.0之前的版本获取uri还是之前的方式

    Uri apkUri = Uri.fromFile(appFile)

    Android8.0变化点:

    安卓8.0设置页面新增了 允许安装未知来源app 按钮,app在进行升级安装的时候需要先判断此开关是否已经打开了,如果没打开,需要跳转到设置页面进行打开,之后返回继续进行app升级安装。


    一、在AndroidManifest.xml清单文件中注册Provider

    <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.cuileikun.androidbase.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/cui_file_paths"
            tools:replace="android:resource"/>
    </provider>

    authorities: 常用命名为包名+fileprovider
    exported要求必须为false,为true会报安全异常
    grantUriPermissions表示URI临时访问权限,true为需要临时访问权限

    resource指当前组件引用res文件夹中qk_file_paths文件,这个文件名可以随便写,只要在res文件夹中有这个文件即可。

    在res文件夹中新建xml文件夹,再新建cui_file_paths.xml文件,内容如下

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <paths>
            <external-path
                name="files_root"
                path="Android/data/com.cuileikun.androidbase/" />
            <external-path
                name="external_storage_root"
                path="." />
            <!-- yan  notice:  do not  edit     -->
            <root-path path="" name="camera_photos" />
        </paths>
    </resources>

    path填上Android/data/包名

    二、安装Apk时注意兼容高低版本

     /**
         * 安装新版本应用
         */
        private void installApp() {
            File appFile = new File(FILE_NAME);
            if (!appFile.exists()) {
                return;
            }
            // 跳转到新版本应用安装页面
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            if (Build.VERSION.SDK_INT >= 24) { //判断是否是AndroidN (安卓7.0)以及更高的版本
                //参数1 上下文, 参数2 Provider主机地址 和配置文件中保持一致   参数3  共享的文件
                Uri apkUri = FileProvider.getUriForFile(mContext, getPackageName() + ".fileprovider", appFile);
               
                //添加这一句表示对目标应用临时授权该Uri所代表的文件
                intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
                //兼容8.0
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                    boolean hasInstallPermission = mContext.getPackageManager().canRequestPackageInstalls();
                    if (!hasInstallPermission) {
                        startInstallPermissionSettingActivity();
                        return;
                    }
                }
            } else {
                intent.setDataAndType(Uri.fromFile(appFile), "application/vnd.android.package-archive");
            }
            startActivity(intent);
            android.os.Process.killProcess(android.os.Process.myPid());
        }
    
        /**
         * 跳转到设置-允许安装未知来源-页面
         */
        @RequiresApi(api = Build.VERSION_CODES.O)
        private void startInstallPermissionSettingActivity() {
            Uri packageUri = Uri.parse("package:" + getPackageName());
            //注意这个是8.0新API
            Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageUri);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            mContext.startActivityForResult(intent, 10086);
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == 10086) {
                installApp();
            }
        }
    
      主要是注意getUriForFile方法中的参数,第二个参数为BuildConfig.APPLICATION_ID + “.fileprovider”
    

    即包名+.fileprovider,这个和AndroidManifest中的Provider中的属性authorities一致

     

    参考链接:

    http://www.2cto.com/kf/201704/622561.html

    展开全文
  • 1.下载老版本apk到电脑安智市场搜索你的应用名字,列如搜索『糗事百科』,如下图 点击历史版本,出现下图 选择你需要的版本,下载即可2.安装apk由于属于低版本,...adb install -r -d apk在本地磁盘的全路径名字

    1.下载老版本apk到电脑

    • 安智市场搜索你的应用名字,列如搜索『糗事百科』,如下图

      这里写图片描述

    • 点击历史版本,出现下图

      这里写图片描述
      选择你需要的版本,下载即可

    2.安装apk

    由于属于低版本,所以不能通过点击apk,自动安装,可在mac的终端执行如下语句:
    adb install -r -d apk在本地磁盘的全路径名字

    展开全文
  • 起因:因为失误上错了一个版本。。。且新版本和旧版本已经发生很大的变化了。重点是。没有旧版本的代码了。。只有旧版本的apk。当我把旧的apk重新上传上去的时候。。提示说新上传的版本的code不能低于线上的版本。...
  • 列表和元组 列表和元组的区别是显然的:列表是动态的,其大小可以该标;而元组是不可变的,一旦创建就不能修改。 实现细节 python中的列表的英文名是list,因此很容易和其它语言(C++, Java等)标准库中常见的链表混淆...
  • 五种百度云盘下载速度慢解决方法

    万次阅读 多人点赞 2018-09-26 09:53:46
    chrome浏览器插件帮你解决!里面有介绍过一些百度云盘下载工具和chrome插件解决百度云盘下载限速的问题。时间久了有些方法并不好用啦,今天我们重新整理了五种百度云盘下载速度慢解决方法。希望可以帮助到大家。 ...
  • 本文分为三部分,第一部分主要直观的介绍深度学习中为什么使用梯度更新,第二部分主要介绍深度学习中梯度消失及爆炸的原因,第三部分对提出梯度消失及爆炸的解决方案。有基础的同鞋可以跳着阅读。 其中,梯度消失...
  • 运行游戏时出现0xc000007b错误的解决方法

    万次阅读 多人点赞 2019-03-23 10:38:58
    但是,由于硬件引起该问题的概率很小,并且除了更换硬件之外没有更好的解决方法,因此本文将详细介绍如何通过软件解决此问题,这也是大家最关心的。由于本文阅读用户众多,大家对于电脑故障解决的熟悉程度也不一样,...
  • 迅雷下载有的电影电视剧的时候会出现:应版权方要求,文件无法下载,或者显示迅雷任务包含违规内容 无法继续下载。...网上的方法要么失效要么难操作,下面给出终极解决方案: 下载迅雷下载试用工具 下载地址:h...
  • 从理论上讲,深度学习只不过是一个数学模型并没有任何的智能 和经典物理一样的固定 ...但是人们忽略了,位置的测量方法是不变的,只要我们掌握了测量方法,就不用理解世界的本质,一样可以很好的解决问题 就如...
  • 错误代码“err_connection_timed_out”的解决方案问题描述解决方案1:清除浏览器历史记录和缓存(亲测有效)解决方案2:修改Windows主机File解决方案3:刷新或更新DNS和IP地址 (亲测有效)解决方案4:过滤防火墙和...
  • 大家好,我是Connor,今天我为大家带来解决CMD命令无法直接运行 '点子' 进行安装库的问题。 今天本来想安装库来着,但是苦于pycharm的设置里不知道出了什么原因,无奈只能使用PIP功能来安装库了,但是输入PIP的时候...
  • jupyter notebook运行命令,一直显示in[*],解决办法看下文章前我想先说一个问题1、因为notebook未安装正确2、因为jupyter包依赖的prompt-toolkit版本问题3、如果上面的问题无法解决。希望大家可以解决自己遇到的...
  • 解决方案: 既然没有安装,我们手动安装不就完事了; 这里介绍一个简单易操作的方法: 通过GG服务框架安装器进行安装; 操作步骤: 1. 通过各种市场可以下载“GG服务框架安装器” 2.安装完成打开“GG服...
  • JSP中文乱码问题终极解决方案

    万次阅读 多人点赞 2013-03-20 21:24:15
    下面来逐一解决其中的乱码问题。一、JSP页面中文乱码在JSP页面中,中文显示乱码有两种情况:一种是HTML中的中文乱码,另一种是在JSP中动态输出的中文乱码。先看一个JSP程序: 中文显示示例 这是一个中文...
  • 突然提示应用签名冲突,无法安装程序,请先卸载旧版本后安装,这时候怎么办呢, 按照提示做,然鹅,当我卸载了所有开发测试版,以及正式版的app后之后依然安装不上,那肿么办呢,分析原因,想办法解决,哈哈。...
  • Win10 磁盘占用100%的解决方案

    万次阅读 2017-11-20 12:24:12
    Win10 磁盘占用100%(卡顿)的解决方案本文提供一种Win10系统磁盘占用100%(卡顿)问题的解决方案(亲测可行)参考配置 电脑:Thinkpad T460p(机械硬盘) 系统:Win10 家庭中文版 (版本号1709) 基本假设 电脑没有...
  • 解决IntelliJ IDEA控制台输出中文乱码问题

    万次阅读 多人点赞 2018-07-18 14:07:25
    二、解决方法: 1.打开tomcat配置页面,Edit Configurations。 2.选择项目部署的tomcat,在配置项VM options文本框中输入-Dfile.encoding=UTF-8,点击Apply或OK即可。 3.尝试重启tomcat,乱码问题解决。 ps...
  • 各种情况都碰到了,现在给出解决方法。按照下面的方式去排查就可以一定能解决你的问题,如果不行的话你来打我呀–!。如果问题解决了希望你能推荐给其他人。 方式一  查看chrom浏览器的快捷方式后面是否有小尾巴,...
1 2 3 4 5 ... 20
收藏数 7,234,496
精华内容 2,893,798
关键字:

解决