最近有个技术需求,要把已写好的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. 界面布局之表格布局TableLayout+TableRow

    一.基础知识: TableLayout置底,TableRow在TableLayout的上面,而Button.TextView等控件就在TableRow之上, 另外,TableLayout之上也可以单独 ...

  2. js倒计时(可定义截止日期)

    <div id="times_wrap" class="time_num"> 距离结束时间: <div class="time_w& ...

  3. 区间求mex的两种方法

    区间求mex的两种方法 1.莫队+分块/莫队+二分+树状数组 2.线段树 预处理1-i的sg值(用一个vis数组,一个cur指针) 预处理nxt数组(a[nxt[i]]=a[i]) 枚举左端点l, 考 ...

  4. C++ lambda 表达式传递的变量默认不可变

    我遇到例如以下问题: int count=0; listener->onTouchMoved=[count](Touch* t,Event* e){ count++; log("onT ...

  5. Windows 应用程序结构

    Windows 应用程序结构

  6. 移动HTML5前端性能优化总结

    概述 1. PC优化手段在Mobile侧同样适用 2. 在Mobile侧我们提出三秒种渲染完成首屏指标 3. 基于第二点,首屏加载3秒完成或使用Loading 4. 基于联通3G网络平均338KB/s ...

  7. Java设计模式 - 单例模式详解(扩展)

    单例模式引发相关整理 如何破坏单例模式 示例: /** * 如果破坏单例模式 * * @author sunyang * @date 2018/11/13 20:14 */ public class ...

  8. JAVA之Math类常用数学运算记录

    Math中定义了许多的方法,且这些方法均为static类型,通过Math类就能直接调用. 调用形式:Math.方法名 例如,我要进行e运算,那么我直接调用Math.exp(double 类型 数值); ...

  9. Learning-Python【0】:Windows环境下Python2和Python3的安装

    一.下载 可以在官网下载最新版本, 也可以在以下链接中找想安装的版本下载下来,这里以Python3.6和Python2.7为例 https://www.python.org/ftp/python/ 二 ...

  10. librdkafka安装和php扩展php-rdkafka安装

    1.安装librdkafka mac下   brew install librdkafka linux下 git clone https://github.com/edenhill/librdkafk ...