zoukankan      html  css  js  c++  java
  • tomcat相关

    转自:https://www.cnblogs.com/cainiaoputeng/p/11148512.html

    前言:

    验证tomcat安装成功

    安装之后:

    1.到安装目录下找startup.bat不闪退,并出现以下图2为成功安装:

    再打开谷歌浏览器输入: localhost:8080验证.

    1、解决Tomcat8启动时控制台中文乱码问题(不止是版本8,其他版本依旧适用)

    从Tomcat官网上下载下来的Tomcat,在初次运行【 binstartup.bat】  时,控制台窗体会出现下图所示的中文乱码。

    Tomcat控制台中文乱码界面

    经过查看分析,应该是Tomcat的log日志模块在记录时出现了中文字符不识别的问题。

    在Tomcat的启动文件“catalina.bat”中约215行可以看到如下:

     

    如果没有设置"%LOGGING_CONFIG%"值,则.......。

    到Tomcat根目录下“conf”子目录下的“logging.properties”文件中查看日志记录的配置,找到该文件,可发现很多的“encoding = UTF-8”配置项,因此判断是该配置项影响了Tomcat控制台的中文乱码输出:

     

    方法(1):将所有的“encoding = UTF-8”都修改为“encoding = GBK”,使其识别支持中文,保存文件修改后,再次启动Tomcat,则看到如下的正常控制台界面,中文乱码不见了。

    方法(2):加入 java.util.logging.ConsoleHandler.encoding = GBK ,保存文件修改后,再次启动Tomcat,则看到如下的正常控制台界面,中文乱码不见了。

     

    2、Tomcat启动一闪而过就消失的原因和解决方法

    原因一:

    (1)首先要搞明白启动不起来的原因。方法是在命令行下,运行startup.bat文件,这样程序就不会一闪而过,而会将启动不起来的原因打印到窗口上。

    (2)在命令行下启动tomcat的方法读者应该都很清楚,大体就是:cmd启动命令行窗口→通过cd命令到tomcat的bin目录下→运行startup.bat。

     (3)通过命令行的提示看到,这是因为电脑上没有配置JAVA_HOME或者JRE_HOME导致的。那么下面添加上JAVA_HOME和JRE_HOME。具体步骤为计算机→属性→环境变量,然后添加系统变量;

    (4)添加完JAVA_HOME和JRE_HOME两个系统变量之后,在将这两个变量放到path系统变量中,方法是,在path变量值的后面直接追加 【;%JAVA_HOME%;%JRE_HOME%】注意!分号是环境变量的分割符号,不可少。

    但是通过亲自测试,发现只配置环境变量 JAVA_HOME 即可以启动 tomcat 的 startup.bat 不发生闪退。

    如果不配置  path变量中的: %JAVA_HOME%in;  ,则无法在命令行中正常运行java、javac和java -version 命令。

    原因二:

    双击tomcat的bin目录下的startup.bat时一闪而过时,可以右键startup.bat找一个文本编辑器打开,然后在文本的最后敲上pause,保存后重新运行startup.bat,这时候窗口会留在桌面上(调试成功,把pause去掉即可)。我们可以看到DOS窗口里有错误信息。

    1. The JRE_HOME environment variable is not defined correctly This environment variableis needed to run this program

    原因:以前版本的tomcat需要JDK,现在的tomcat(本人的是7.0)只要有JRE就可以。 如果你装的tomcat的是解压版的(免安装的)那么则需要自己手动配置JRE_HOME 这个环境变量,否则,就会出现上面的错误。 解决办法:右击 我的电脑 - 高级 - 环境变量, 在系统变量中 新建 变量名:JRE_HOME 变量值:C:Program FilesJavajre7(根据你自己的JDK安装目录寻找JRE)

    2.Neither the JAVA_HOME nor the JRE_HOME environment variable is defined Tomcat的startup.bat,

    它调用了catalina.bat,而catalina.bat则调用了setclasspath.bat,只要在setclasspath.bat的开头声明环境变量(红色两行)就可以了,原因是后来较新版本安装完不会自动登记环境变量JAVA_HOME,JRE_HOME。 给setclasspath.bat的开头添加红色标记部分,如下: rem ___________________________ rem Set CLASSPATH and Java options rem rem rem ____________________________ set JAVA_HOME=C:Program FilesJavajdk1.6.0_20 set JRE_HOME=C:Program FilesJavajre6 rem Make sure prerequisite environment variables are set if not “%JAVA_HOME%” == “” goto gotJdkHome if not “%JRE_HOME%” == “” goto gotJreHome echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined echo At least one of these environment variable is needed to run this program goto exit

    这样在每次运行startup.bat时就自动注册了JAVA_HOME,JRE_HOME。 运行startup.bat,提示“信息:Server startup in xxxxx ms” OK 大功告成。

    3. Cannot find “”d:apache-tomcat-6.0.32”insetclasspath.bat”

    这个时候,可能是CATALINA_HOME的值在某个地方被写死了,像我的绿色版tomcat在bin文件下多了一个setenv.bat的文件,打开一看果然是在这里面被写死了CATALINA_HOME的路径,这应该是为了某种原因被人后加上的设置文件,把这个文件删除之后,tomcat可以正常运行了。

    原因三:

    如果你的环境配置没有错,也没有上述两种错误那么可能你已经启动了一个Tomcat,这样两个Tomcat会产生冲突。你可以在com中查看8080是否被占用:

    (1)我们可以使用如下命令来找出哪个进程占用5037这个端口

            netstat -ano | findstr "5037"

    (2)最后一列为占用5037端口的进程号,PID为9060,那么我们可以在任务管理器里查看改进程号所对应的进程,直接右击结束该进程即可。或者使用上面提到的taskkill命令,它主要是用来批量删除某些进程,当然,也可以用来删除一个进程,使用方法如下:

    taskkill /PID 9060 /F        其中,/F主要是用来强制删除。

    你也可以查看Tomcat自带的打印日志在你的Tomcat的logs文件夹下如果出现了

    七月 04, 2018 10:40:20 上午 org.apache.catalina.core.StandardService initInternal

    严重: Failed to initialize connector [Connector[HTTP/1.1-8080]]

    org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8080]]

    类似的错误可能已经运行了一个Tomcat你可以在服务中把它终止掉,然后再运行自己的Tomcat就可以了。

    3、启动 tomcat 后提示警告:Can't load AMD 64-bit .dll on a IA 32-bit platform

    将tomcatin下的 tcnative-1.dll 文件删除掉,则报如下警告,并未解决问题。

    问题所在:
    主要是在64位的系统下安装的虚拟机是32位的,不能在64位的平台下加载32位的虚拟机,只能加载64位的。由于tomcat在安装的时候加载的32虚拟机的地址,它找到的是32位的虚拟机,所以它提示不能加载64位的虚拟机(在目录下没有64的虚拟机)。

    解决之道:

    下载一个64的JDK安装,修改JAVA_HOME。

    如果设置上面之后还有问题,那么下载32/64位集合体的Tomcat:

    地址:http://tomcat.apache.org/download-70.cgi

    32-bit/64-bit Windows Service Installer (pgpmd5)

     直接下载地址:http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.56/bin/apache-tomcat-7.0.56.exe

    安装这个Tomcat之后,再运行就不会出错了。

    如何查看jdk的版本是32位还是64位

    在cmd下输入java  -version来查看,如果没有标明是多少位的,默认一般是32位的。

     

    下图为64位:

    这里写图片描述

    (箭头指示jdk版本)

    还有一种比较粗旷的方式 这个从CPU说起: IA-32架构与IA-64架构 IA是Intel Architecture(英特尔体系结构)的英语缩写 IA-32架构有32位CPU也有64位CPU。(我们经常使用的CPU)

    IA-64架构下有Intel64位的CPU(只有服务器使用的CPU)

    IA-32架构: 本架构的CPU都采用X86指令 Intel,AMD,Cyrix等厂家都生产X86指令集的CPU 其中32位(x86-32)的CPU有i80386,i80486,i80586,i80686,统称i80X86,简称x86 其中64位(x86-64)的CPU有:2006年以后生产的PC机CPU都是64位的,简称x64 最大的优点在于可以全面兼容以前32位x86指令的应用程序,他们都是IA-32架构。

    由此可以简单判断一些软件(svn,jdk等)的版本位数,要看软件默认安装的位置来进行判断,如下图:

    这里写图片描述

    Program  Files默认安装路径在此文件下是64位数的版本; 
    Program  Files(x86)默认安装路径在此文件下是32位数的版本;

    如何查看tomcat的位数

     

    2】在cmd命令行界面,运行tomcat/bin下的 version.bat 文件

    其中  Architechture参数值就是位数。  server number 参数值就是tomcat版本号。

  • 相关阅读:
    【流量劫持】SSLStrip 终极版 —— location 瞒天过海
    【流量劫持】沉默中的狂怒 —— Cookie 大喷发
    【流量劫持】SSLStrip 的未来 —— HTTPS 前端劫持
    Web 前端攻防(2014版)
    流量劫持 —— 浮层登录框的隐患
    流量劫持能有多大危害?
    流量劫持是如何产生的?
    XSS 前端防火墙 —— 整装待发
    XSS 前端防火墙 —— 天衣无缝的防护
    XSS 前端防火墙 —— 无懈可击的钩子
  • 原文地址:https://www.cnblogs.com/shangshen/p/11149689.html
Copyright © 2011-2022 走看看