转:zip版Tomcat(6,7)不能注册成windows服务或者注册后不能启动的问题解决
源地址:http://www.iflym.com/index.php/code/zip-tomcat67-can-not-register-windows-services-resolve.html
在日常的开发中,经常要使用到tomcat,一般情况下,我们只需要下载zip版的tomcat,并在ide中进行配置即可。而不需要将tomcat注册成服务,但在部署中,如果需要将tomcat部署到客户机器上时,就会出现一定问题了。
一般情况下,如果要部署成服务的形式,就需要下载专门的windows安装版(一个exe的安装文件),在windows下进行安装。而这种安装版,有一个问题就是,它默认的服务名就是tomcat6或tomcat7,而不能手动的进行修改。如果需要安装多个tomcat,就不能使用安装版了。在这种情况下,我们一般是下载zip版的tomcat,通过service.bat的方式来将tomcat注册成服务。
一般情况下,注册成服务的tomcat并不能启动,问题有很多种。我就在实际过程中发现的问题,一一列举出来,以方便碰到此问题的同学一起解决这个问题。
|
1
2
3
|
A service specific error occurred: 0.More help is available by typing NET HELPMSG 3547. |
第一个问题:如果注册服务都注册不成功,则首先要检查注册服务所使用的命令能否检测到所安装的java。这个检查只需要查看命令行是否出现以下字样即可:
|
1
2
3
4
5
6
|
Installing the service 'Tomcat6' ...Using CATALINA_HOME: E:\javaServer\tomcat6utf8Using CATALINA_BASE: E:\javaServer\tomcat6utf8Using JAVA_HOME: C:\jdk1.6.0_24Using JVM: C:\jdk1.6.0_24\jre\bin\server\jvm.dllThe service 'Tomcat6' has been installed. |
如果出现以下字样,则表示已经检测到了java。
第二个问题:网上经常说的msvcr71.dll和msvcp71.dll。这两个dll文件只需要放到windows的path环境变量可以找到的地方即可,并不需要特别的放到某一个特殊的地方。
查看这个文件是否能够被找到的一个很简单的方法,即是在命令行输入这两个文件,如:
|
1
|
E:\javaServer\tomcat6utf8\bin>msvcr71.dll |
如果windows找到了这个文件,则就会弹出一个如何打开文件的对话框,请求你如果打开这个文件。这就表示windows已经找到了这个文件。
当然,如果把这两个文件都copy到tomcat的bin目录下,也是一种解决方法(没做过测试)
第三个问题:java版本和tomcat版本问题。
这里说的版本问题并不简单地是一个jre5和jre6的问题,一般来说,安装tomcat6需要jre5,安装tomcat7需要jre6,这都是常识的问题。
特殊的问题就是:你的tomcat版本需要和jvm的版本相一致。
我碰到这个问题,总是找不到解决问题的方法,最后发现,如果将安装版里的tomcat.exe文件copy至zip版的bin目录,并覆盖原tomcat.exe文件,服务就能够正常启动,但它自带的zip版的tomcat.exe死活不能启动,查看了两个exe的区别,除了大小不一样,其它的配置都一样。我注意到一个问题,就是官方对于安装版的tomcat,说明它可以试用于win32系统,也可以试用于64位系统,这就是问题的关键。
我机器上的java版本是64位的,而下载的zip版tomcat是32位的,在启动tomcat时,会在logs目录下的jakata-service.log文件中出现以下内容:
|
1
2
3
4
5
|
<span style="color: #000000">[2011-03-31 12:00:45] [174 javajni.c] [error] %1 is not a valid Win32 application.[2011-03-31 12:00:45] [994 prunsrv.c] [error] Failed creating java C:\jdk1.6.0_24\jre\bin\server\jvm.dll[2011-03-31 12:00:45] [1269 prunsrv.c] [error] ServiceStart returned 1</span> |
表示不能启动jvm。当我通过修改服务的注册表,将其使用时使用的jvm换成32位的jvm时,服务就启动了。这就表示,zip版的tomcat需要根据jvm来下载不同的zip。在官方下载中,确实看到了zip版的tomcat有32位和64位之分,我下载64位的tomcat下来,注册成服务之后,tomcat直接启动成功。看来确实是jvm适用系统版本和tomcat适用系统版本不一致的问题。
当然,在开发过程中,我们都是使用startup.bat来启动tomcat,这里面就没有涉及到exe的问题,实际上就是调用java来启动tomcat,因此这个问题不会出现。其实32位tomcat和64tomcat的区别,就在于它提供的tomcat.exe的不同。
转:zip版Tomcat(6,7)不能注册成windows服务或者注册后不能启动的问题解决的更多相关文章
- 把NodeJS注册成Windows服务
为了让NodeJS开发的网站能在服务器端正常运行,最好把NodeJS需要运行的代码注册成Windows服务,服务器如果重启也不需要重新去启动NodeJS. 1.编写一个执行NodeJS脚本的bat文件 ...
- Postgresql数据库部署之:Postgresql本机启动和Postgresql注册成windows 服务
1.初始化并创建数据库(一次即可) initdb \data --locale=chs -U postgres -W You can now start the database server u ...
- Nginx的使用(三)把nginx和php-cgi.exe注册成windows服务
1.创建windows服务用到一个小工具WinSW:https://github.com/kohsuke/winsw/releases(下载 .exe 文件即可,根据系统选择,Win 10 选择 .N ...
- 使用NSSM把任意exe程序注册成Windows服务
1.登录NSSM官网下载最新版本: http://www.nssm.cc/download 2.解压之后可以看到win32和win64位的nssm.exe,根据自己的电脑选择使用 3.拷贝一份nssm ...
- 将bat文件或exe程序注册成windows服务
命令行使用sc命令.关于sc命令的详解,请自行查看帮助(sc /?),在此只简单提及如何加入系统服务功能.加入服务:sc create ServiceName binPath= 路径 start= a ...
- 怎样把任意exe程序注册成windows系统服务(手动注册服务)
1. 要实现这个功能要用到微软提供的两个小工具“instsrv.exe”和“srvany.exe”(下载地址:http://www.cr173.com/soft/64394.html). 先下载这两个 ...
- 将可执行exe文件注册成windows服务
要把应用程序添加为服务,你需要两个小软件:Instsrv.exe和Srvany.exe.Instsrv.exe可以给系统安装和删除服务,Srvany.exe可以让程序以服务的方式运行.这两个软件都包含 ...
- 使用winsw将spring-boot jar包注册成windows服务
背景:最近的项目中使用spring-boot, https://github.com/kohsuke/winsw/releases <service> <id>YJPSS< ...
- 将bat批处理文件注册成windows服务
C:\Users\lenovo>sc create MyService binPath= "C:\Program Files\restartOracle.bat" type ...
随机推荐
- 【BZOJ1412】狼和羊的故事(最小割)
题意:将一个由0,1,2构成的矩阵里的1与2全部分割最少需要选取多少条边 n,m<=100 思路:裸的最小割模型 相邻的格子连容量为1的边(其实可以少连很多遍,1与1,2与2之间的边是没有意义的 ...
- Codeforces891C. Envy
$n \leq 5e5$,$m \leq 5e5$的无向边权图,$q \leq 5e5$个询问,每次问一系列边是否能同时存在于某棵最小生成树上. 一条边在最小生成树上,当比他小的边都加入后,加入他会使 ...
- css-包含块
在CSS中,有事一个元素的位置和尺寸的计算都相对于一个矩形,这个矩形被称作包含块.包含块是一个相对的概念,比如 子元素的初始化布局总是在父元素的左上角,这就是一个相对的概念.其中父元素就是一个参照物, ...
- [MFC] CString小用例
在实际项目中需要对数字转成的字符串进行格式处理, 如: 50.500000,需要转化成50.5; 1.00000,需要转化成1, 对于编号而言要求都是4位,不足前面补0. 如1转成0001,222转成 ...
- Android开发把项目打包成apk-(转)
做完一个Android项目之后,如何才能把项目发布到Internet上供别人使用呢?我们需要将自己的程序打包成Android安装包文件--APK(Android Package),其后缀名为" ...
- SSH: Transferred 0 file(s) 解决
Jenkins搭建过程中,使用 Publish Over SSH 插件.发生 SSH: Transferred 0 file(s). 百度.google了几个小时,终于找到答案,特此记录. 配置如下: ...
- Java 新手的通病
一:对算法和数据结构不熟悉 为什么我先拿“数据结构和算法”说事捏?这玩意是写程序最最基本的东东.不管你使用 Java 还是其它的什么语言,都离不开它.而且这玩意是跨语言的,学好之后不管在哪门语言中都能 ...
- SQL入门随笔(上机实验报告)
<数据定义部分> 一.定义模式和删除模式 a.为用户定义一个模式学生—课程模式 S-T CREATE SCHEMA "S-T" AUTHORIZATION USE ...
- Android-一张图理解MVP的用法
M和V通过P交互,M做了两件事,开启子线程做耗时操作,然后使用原生的Hander方式切回主线程回调结果给P. M做的两件事也可以使用比较流行的rxjava实现: 备注:图片不清晰可以看这里
- Ubuntu 16.04安装IntelliJ IDEA时快捷键冲突设置
解决快捷键冲突可以有如下方法: 1.直接修改IDEA的,但是不建议这么干,因为多平台时,或者去到另外一台电脑时,统一的快捷键能更快的适应新的开发环境. 2.通过修改系统默认的快捷键. 3.就这两种方式 ...