最近有个技术需求,要把已写好的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. Ecshop 安装时错误

    网上提示方法将install/includes/lib_installer.php以下内容修改后仍然提示失败: include(ROOT_PATH . 'install/languages/' . $ ...

  2. Inno Setup执行SQL脚本的方法

    作为和NSIS并立的.两个最流行的免费Windows应用程序安装包制作工具之一,Inno在学习难度上相对要低一些,非常适合对一些简单的桌面程序打包.但对于较复杂的安装过程,或者Web应用程序来说,我个 ...

  3. delphi 程序全屏显示无标题栏,覆盖整个屏幕

    delphi 程序全屏显示无标题栏,覆盖整个屏幕,这个在做工控机或屏保时有用的,所以记下 procedure TMainFrm.FormCreate(Sender: TObject); begin w ...

  4. 页面设计--Label

    页面设计功能是实现可视化的拖拉方式来设计业务单据页面,同时支持主从表单功能. 包含经常用到的控件:Label.TestBox.Button.ComboBox下拉框.CheckBox复选框.RadioB ...

  5. Hadoop2.6.0错误

    错误1: WARN hdfs.DFSClient: DataStreamer Exception org.apache.hadoop.ipc.RemoteException(java.io.IOExc ...

  6. Redis数据持久化之RDB持久化

    因为Redis服务器将数据存储在内存里面,而一旦服务器被关闭或者运行服务器的主机本身被关闭的话,存储在内存里面的数据就会消失不见: 如果我们仅仅是将redis用作缓存的话,那么这种数据丢失带来的问题并 ...

  7. 【Unity Shaders】学习笔记——SurfaceShader(八)生成立方图

    [Unity Shaders]学习笔记——SurfaceShader(八)生成立方图 转载请注明出处:http://www.cnblogs.com/-867259206/p/5630261.html ...

  8. Java基本概念(未完)

    仅简单总结~辅助快速回忆~ 一.JVM 1,Java类加载机制 Java程序由多个类文件组成,按需加载. Java的动态扩展是由运行期动态加载和动态链接实现的.——动态绑定,多态. 加载步骤: 1)装 ...

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

    来源:http://www.imooc.com/code/1356 嵌套 if 语句,只有当外层 if 的条件成立时,才会判断内层 if 的条件.例如,活动计划的安排,如果今天是工作日,则去上班,如果 ...

  10. Accessing the Deep Web: A Survey

    http://www.inf.ufsc.br/~ronaldo/deepWeb/querying/Chang-dwsurvey-cacm07.pdf