最近有个技术需求,要把已写好的Java程序注册成Windows服务,网上搜了两个快捷办法,一个是Java Service Wrapper,这是个收费的第三方组件,免费的版本还没有适合64位Win7系统的,所以我就尝试了第二个办法——JavaService。

虽然JavaService的版本从网上搜来的比较老,配置过程还不算太麻烦。可是我整了一天,尝试了网上的各种说法,这个JavaService总是提示服务注册成功,但是启动总是失败。好不容易有一次把日志报错文件整出来了,从中发现原来项目封装成的可执行jar包中找不到某个类,上网搜了搜,我们在用Eclipse打包项目时,应该选择将引用的jar包中的类抽出到自己的项目中。OK,那这个问题解决了,结果一运行果断成功,但是,我想着把服务注册命令给精简一下吧,结果这么一改,又启动失败了,而且一直日志文件也没出来,说明JavaService自身在运行时就出问题了。结果在Google里搜索发现,原来是指定的JDK路径中有空格的原因。下面贴出命令行中的命令:

 JavaService -install Client "%JAVA_HOME%"\jre\bin\server\jvm.dll -Djava.class.path=
"%JAVA_HOME%"\lib\tools.jar;D:\JavaService\client.jar
-start com.yx.util.Main -out D:\JavaService\Logs\stdout.log -err D:\JavaServer\logs\stderr.log

这是我最开始的服务注册命令,命令中的各个参数就不再描述了,大家可以问“百老师”,说的很详细了。直接说上面命令中存在的问题,首先解决JDK路径中有空格的办法是加引号,而这里%JAVA_HOME%是读不出来的,即使使用"%JAVA_HOME%"\jre\bin\server\jvm.dll"这种写法也无济于事,不过大家可以尝试一下设置路径中没有空格的%JAVA_HOME%,看看"%JAVA_HOME%"这种写法是否起作用。由于本人机器上的JDK已经安装过了,所以就不再折腾了。

好了,展示一下正确的、起作用的命令:

 JavaService -install Client "C:\Program Files (x86)\Java\jdk1.7.0\jre\bin\server\jvm.dll" -Djava.class.path=
"C:\Program Files (x86)\Java\jdk1.7.0\lib\tools.jar;D:\JavaService\client.jar"
-start com.yx.util.Main -out D:\JavaService\Logs\stdout.log -err D:\JavaServer\logs\stderr.log

从上面的命令可以看出,我是把"%JAVA_HOME%"替换成了绝对路径,并将整个参数值用引号引了起来。这样服务就可以正常启动了。

JavaService应用中的注意事项的更多相关文章

  1. 关于JDBC学习过程中的注意事项(分享自己犯过的错误,写给初学JDBC的小伙伴的八条建议)

    关于JDBC学习过程中的注意事项(分享自己犯过的错误,写给初学JDBC的小伙伴的八条建议) 前言:最近在学习JDBC,总结了几个小问题,特地分享给大家,让大家不要犯这样的错误,也希望大家养成学会总结的 ...

  2. 从 注解和继承 到 JAXB中的注意事项

    从 注解和继承 到 JAXB中的注意事项 注解在继承中的行为 如果一个父类添加了一个注解,子类是否能取到这个注解呢?如下 package inheritance; import java.lang.a ...

  3. TransactionScope事务处理方法介绍及.NET Core中的注意事项 SQL Server数据库漏洞评估了解一下 预热ASP.NET MVC 的VIEW [AUTOMAPPER]反射自动注册AUTOMAPPER PROFILE

    TransactionScope事务处理方法介绍及.NET Core中的注意事项   作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/10170712.ht ...

  4. php课程 10-34 目录遍历中的注意事项是什么

    php课程 10-34 目录遍历中的注意事项是什么 一.总结 一句话总结:用scandir,会把目录和文件放到一个数组中. 1.移动文件怎么实现,php里面没有移动文件这个函数? 先复制,再删除 2 ...

  5. Django学习系列17:在模板中渲染待办事项

    前面提到的问题中在表格中显示多个待办事项 是最后一个容易解决的问题.要编写一个新单元测试,检查模板是否也能显示多个待办事项: lists/tests.py def test_displays_all_ ...

  6. JavaScript语言学习中的注意事项

    javascript: 基于浏览器 基于对象 事件驱动 脚本语言 由: javascript: ECMAscript(ES) DOM文档对象模型 BOM浏览器对象模型,三部分组成 使用js的三种方式 ...

  7. TransactionScope事务处理方法介绍及.NET Core中的注意事项

    作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/10170712.html 今天在写CzarCms的UnitOfWork的使用使用到了这个Transacti ...

  8. VB6程序中NULL注意事项

    VB6中从数据库中取出栏位值进行操作,若栏位值为Null,则必须小心处理,否则极易导致程序出错退出. 通常我们从recordset中取出栏位值采用Fields方法,加上栏位名称,如 rsMoney.F ...

  9. cin中的注意事项

    猎豹网校C++ Primer学习笔记 - ostartech - 博客园 https://www.cnblogs.com/wxl845235800/p/11396323.html 在VS中使用cin& ...

随机推荐

  1. Java SE 第十六讲----面向对象特征之继承

    1.继承(inheritance):Java是单继承的,意味着一个类只能从另一个类继承(被继承的类叫做父类也叫[基类 baseclass]),继承的类叫做子类,java中的继承使用extends关键字 ...

  2. js中格式化时间字符串

    .net 程序员肯定有遇到过,将一个对象json序列化之后Date 字段 就会转化成 '/Date(1370770323740)/' 这种格式的数据,下面介绍一种在js中,关于时间格式的转换. < ...

  3. maven Spring获取不到配置文件

    如题: 如果在maven项目中,Spring获取不到配置文件, 把配置文件放到.src/main/resource文件夹下即可 import org.springframework.context.s ...

  4. MFC学习 文件操作注册表操作

    c读写文件 void CFileView::OnRead() { FILE *pFile = fopen("1.txt", "r"); /*char ch[10 ...

  5. Docker学习总结之docker介绍

    About Docker 以下均翻译自Docker官方文档 ,转载请注明:Vikings翻译 Develop, Ship and Run Any Application, Anywhere Docke ...

  6. 使用Flex4的PopUpManager的addPopUp() 方法弹出 removeChild异常的解决办法

    Flex4中,弹出窗口有两种: Alert.show("balabalabala-");   PopUpManager.addPopUp([要弹出的控件],[父控件],[是否模态] ...

  7. rabbitmq学习笔记

    1 基本概念 rabbitmq server(broker server):rabbitmq服务 client:包括producers和consumer message:包括payload和label ...

  8. 【LeetCode】19. Remove Nth Node From End of List

    题目: 思路:如果链表为空或者n小于1,直接返回即可,否则,让链表从头走到尾,每移动一步,让n减1. 1.链表1->2->3,n=4,不存在倒数第四个节点,返回整个链表 扫过的节点依次:1 ...

  9. 慕课网-安卓工程师初养成-4-3 Java条件语句之多重 if

    来源:http://www.imooc.com/code/1355 多重 if 语句,在条件 1 不满足的情况下,才会进行条件 2 的判断:当前面的条件均不成立时,才会执行 else 块内的代码.例如 ...

  10. BZOJ1051 受欢迎的牛

    http://www.lydsy.com/JudgeOnline/problem.php?id=1051 Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A ...