(1)制作WINDOWS EXE程序
java做成window的exe程序或者服务程序实在是吃饱撑的,有点变态,但是如果你不想起在一台服务器的后台程序,被哪个笨蛋不小心给关了,或者人家把进程中的java给杀了,那就有必要照着下面我说的方法去做了:
borland不公开的一个使用技巧,能够通过jbuilder来制作exe文件来启动java文件。jbuilder并不支持本地编译机制。但是有一个隐藏的技巧可以让你从可执行文件来启动java程序,可以出现或者不出现console窗口。想做到这些,需要jbuilder的bin目录下的这些文件:
jbuilder.exe (带DOS窗口)
jbuilderw.exe (不带DOS窗口)
jbuilder.config
jdk.config
“jbuilder.exe”是一个通用的可执行外壳文件,用以启动java程序,”jbuilderw.exe“好像是javaw.exe一样,它把”jbuilder.exe”包装起来,但是运行时候不显示那个console的窗口。使用这些文件的关键是文件名。“jbuilder.exe”查找一个文件叫”jbuilder.config”的配置文件,里面包含了运行java程序的必须信息。同样的”jbuilderw.exe”查找”jbuilder.exe”来启动不带console窗口的java程序。
如果把jbuilder.exe重命名为”smsDialTest.exe”,那”smsDialTest.exe”将去寻找”smsDialTest.config”配置文件,同样”jbuilderw.exe”被重命名为”smsDialTestw.exe”,它会去寻找”smsDialTest.exe”文件。
所以,我们只要把jbuilder .exe,jbuilerw.exe,jbuilder.config改名成相应的文件名,在jbuilder.config里面指定主
类和类路径,就能够通过执行jbuilder.exe(或者被改名后的exe文件)来启动java应用程序了。
设置jdk.conifg中的"javapath",例子:“javapath ../jdk1.5/jre/bin/client/jvm.dll”
设置smsDialTest.config:
# +-----------------------------------------------------+
# | |
# | This is the configuration file for the smsDialTest |
# | |
# | Do NOT make modifications without maintaining a |
# | backup copy. See config_readme.html for a |
# | description of the recognized directives. |
# | |
# +-----------------------------------------------------+
# Read the shared JDK definition
include jdk.config
# Tune this VM to provide enough headroom to work on large
# applications
vmparam -Xms128m
vmparam -Xmx512m
# Put the Light AWT wrapper and various JDK fixes on the boot path
addbootpath ../image
# Add all JAR files located in the patch, lib and lib/ext directory
addjars ../lib
addjars ../classes
# Activate the shell integration
socket 8888
# Add all the configuration files located in the lib/ext directory
# JBuilder needs to have access to the environment
exportenv
# Start smsDialTEST using the main class
mainclass smsdialtest.gui.SmsDialTestMainFrame
(2)把JAVA程序做成windows服务程序
我试过把JAVA做成EXE,然后再做成windows服务,但是问题出来了,没地方把环境变量以及很多参数设置进去。
最后,用“java service Wrapper”来搞定这个问题。
Wrapper 下载页面
http://sourceforge.net/project/showfiles.php?group_id=39428
最新的是3.1.2 以下例子都是在此版本下进行
环境:Win2003server + JDK1.5 + Wrapper3.1.2
配置wrapper.conf文件>
#********************************************************************
# Wrapper Properties
#********************************************************************
# Java Application
wrapper.java.command=E:/project/developIDE/project/unicomsms/dialtest/jdk1.5/bin/java
# Java Main class. This class must implement the WrapperListener interface
# or guarantee that the WrapperManager class is initialized. Helper
# classes are provided to do this for you. See the Integration section
# of the documentation for details.
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
# Java Classpath (include wrapper.jar) Add class path elements as
# needed starting from 1
wrapper.java.classpath.1==%PATH%
wrapper.java.classpath.2=../lib/wrapper.jar
wrapper.java.classpath.3=../lib/*.jar
wrapper.java.classpath.4=../classes
wrapper.java.classpath.5=../conf
wrapper.java.classpath.6=../log
# Java Library Path (location of Wrapper.DLL or libwrapper.so)
wrapper.java.library.path.1=../lib
wrapper.java.library.path.2=../jdk1.5/jre/lib/ext/win32com.dll
wrapper.java.library.path.3=../jdk1.5/jre/bin/win32com.dll
# Java Additional Parameters
#wrapper.java.additional.1=
# Initial Java Heap Size (in MB)
#wrapper.java.initmemory=128
# Maximum Java Heap Size (in MB)
#wrapper.java.maxmemory=512
# Application parameters. Add parameters as needed starting from 1
wrapper.app.parameter.1=smsdialtest.util.SmsServerUtil
#********************************************************************
# Wrapper Logging Properties
#********************************************************************
# Format of output for the console. (See docs for formats)
wrapper.console.format=PM
# Log Level for console output. (See docs for log levels)
wrapper.console.loglevel=INFO
# Log file to use for wrapper output logging.
wrapper.logfile=../log/wrapper.log
# Format of output for the log file. (See docs for formats)
wrapper.logfile.format=LPTDM
# Log Level for log file output. (See docs for log levels)
wrapper.logfile.loglevel=INFO
# Maximum size that the log file will be allowed to grow to before
# the log is rolled. Size is specified in bytes. The default value
# of 0, disables log rolling. May abbreviate with the 'k' (kb) or
# 'm' (mb) suffix. For example: 10m = 10 megabytes.
wrapper.logfile.maxsize=0
# Maximum number of rolled log files which will be allowed before old
# files are deleted. The default value of 0 implies no limit.
wrapper.logfile.maxfiles=0
# Log Level for sys/event log output. (See docs for log levels)
wrapper.syslog.loglevel=NONE
#********************************************************************
# Wrapper Windows Properties
#********************************************************************
# Title to use when running as a console
wrapper.console.title=增值业务综合网管业务拨测客户端软件
#********************************************************************
# Wrapper Windows NT/2000/XP Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
# using this configuration file has been installed as a service.
# Please uninstall the service before modifying this section. The
# service can then be reinstalled.
# Name of the service
wrapper.ntservice.name=服务名字
# Display name of the service
wrapper.ntservice.displayname=服务名字
# Description of the service
wrapper.ntservice.description=服务名字
# Service dependencies. Add dependencies as needed starting from 1
wrapper.ntservice.dependency.1=
# Mode in which the service is installed. AUTO_START or DEMAND_START
wrapper.ntservice.starttype=AUTO_START
# Allow the service to interact with the desktop.
wrapper.ntservice.interactive=false
把wrapper-windows-x86-32-3.2.1\src\bin目录下的,几个文件COPY到你的BIN目录下,把他们的.bat.in扩展名,改为.bat就可以了。
App.bat.in//手工启动你的程序,带着DOS窗口,一开始你要用这个文件测试你的环境是否搭好了
InstallApp-NT.bat.in//安装服务程序,安装成功后会在WINDOWS服务中显示出你的服务程序
UninstallApp-NT.bat.in//卸载服务程序。
wrapper.exe//wrapper主程序
把wrapper-windows-x86-32-3.2.1\lib目录下的wrapper.dll,wrapper.jar2个文件COPY到你的LIB目录下。
最后,你先用App.bat测试你的程序,如果一切正常,就运行InstallApp-NT.bat.。这样制作的服务就成功了。
eclipse导出jar文件再将它转换成exe可执行文件详解
关键字: 欢迎光临
此文章是为了帮助刚接触j2se或不懂如何打包jar文件的人而着笔,同时也是让自己的知识以文章的形式保存起来.
一、导出jar文件:
如果你的程序开发已经接近尾声了,正准备将其生成桌面可执行文件却不知道该如何操作时,你只要按照以下步骤实行即可:选中你的项目---然后右击弹出选项列表---选择Export---Java---jar file---next---browser(选择jar的存放路径)---next---next(不管太多继续下一步)---browser(选择你程序的主类--OK)---finish;查看你存放jar的目录,是否已经生成了?如果没有你一定没按照步骤操作.
二、运行jar文件:
生成的jar文件你可以双击运行它,但默认情况下会以压缩包的方式打开,如果这不是你想要的结果,请右击文件---打开方式---选择java(TM)platform来运行.我想这时你应该看到了你的软件界面.先恭喜你了..
三、连同第三方文件一并导出至jar文件:
如果你在程序开发的时候用到了第三方提供的API或者其它附属资源,在你导出生成jar文件时你必须将第三方的文件一并导出,不然你的程序运行将达不到你想要的结果.
你可以利用Fat jar插件生成jar,Fat jar 的下载地址:http://sourceforge.net/projects/fjep/ 下载的文件是net.sf.fjep.fatjar_0.0.31.zip,解压缩后你会看到plugins文件夹中的net.sf.fjep.fatjar_0.0.31.jar文件(简称Fat jar).
插件安装:把Fat jar文件拷贝到你的eclipse目录下的plugins中..重新启动你的eclipse平台,然后查看Window---preferences,弹出的窗口中有Fat jar preferences这一项则说明你已经安装成功了,没有这一项则未安装成功,需要多做如下几步操作:到你的eclipse目录下的configuration---org.eclipse.update,并删除platform.xml文件,然后重新启动eclipse.查看Window---preferences,你会发现Fat jar preferences这一项.恭喜你安装成功了.(未成功可直接去墙撞死)..
用Fat jar打包:右击你的项目,选项列表中有Build Fat jar这一项,选择它,弹出的窗口你会觉得特别亲切,一目了然使用很方便,点击Browser(Main-Class选择你的主类)---next---finish(勾选你需要一起打包的资源,默认为全部勾选).瞧,jar文件就生成在你的工程项目中了.运行它,一切顺利,否则就是你编程的问题了..
另:如果你不想用Fat jar来打包,有一个更快捷的方法可以帮助你,但也是有缺陷的.
步骤:将你需要用到的附属文件放到你的jre安装目录下的\lib\ext目录中(安装JDK的同时也安装了jre),再通过(一、导出jar文件)的方式生成jar.这样就可以了.它有个致命的缺点就是,这样的jar文件只能在你本机可以使用,如果要在别的机子上运行必需在\lib\ext放置同样的附属资源.
四、将jar文件转换成exe可执行文件:
exe文件使用方便,而且还可以提高源码及资源的安全性,但同时也失去了java的初衷--跨平台性.
如果你坚持要转换成exe文件,请按以下方式进行:
利用exe4j这个软件转换jar文件为exe文件,exe4j下载地址:http://www.ej-technologies.com/download/exe4j/files.html,(目前最新版本为4.2)有的需要安装,有的只要解压缩即可用.我一般用安装的exe4j软件,它们没有什么区别,因此找个可以用的就行了.下载安装后,运行它,接着按步骤操作:
1.运行后直接点Next.
2.选择第二项“JAR in EXE mode”,之后点击Next.
3.在General---Short name of your application框中输入你的应用程序的名字(随便即可),在Directories---Output directory框中输入生成exe后的保存路径,然后Next.
4.在Excutable name框中输入将要生成的exe的名字,“Icon File”是应用程序显示的小图标,不选也行.继续Next.
5.必须先配置Class-Path,点击+号添加文件,即jar文件,如果有用到其它资源需要把资源一起添加进去.
6.General --- Main Class选择主类.
7.Java Version --- Minimum version(低版本必须填写),Maximum version(高版本可以为空),如果都有填写那么高版本的值必须大于低版本的值.
8.勾选Allow JREs with a beta version number以及Only allow JDKs and no JREs.接着Next.到这一步你可以直接finish.这样就把jar转换成exe文件了.你可以点击Click Here to Start the Application按钮测试生成的文件.
到这里就完毕了,对你有没有帮助呢?我想多少解决一些人的烦恼是有的..
Java程序注册为Windows的服务
一.运行环境
电脑上应该有java运行环境。
二.需要软件
Java Service Wrapper
下载地址为http://sourceforge.net/projects/wrapper/
三.配置过程
1.首先将java程序打成jar包。
2.Java Service Wrapper包解压。
3.比如要注册成服务的程序项目目录为workapp,那么在这个目录下面新建三个文件夹:
bin、conf、lib。
4.把Java Service Wrapper包中bin目录下的Wrapper.exe、src/bin目录下的App.bat.in、InstallApp-NT.bat.in、UninstallApp-NT.bat.in文件拷贝到workapp的bin目录中,并分别改名为App.bat、InstallApp-NT.bat、UninstallApp-NT.bat。
5.把Java Service Wrapper包中lib目录下的Wrapper.DLL、wrapper.jar拷贝到workapp的lib目录中。并且将项目的jar和所用到的jar都拷贝到该目录。
6.把Java Service Wrapper包中srcconf目录下的wrapper.conf.in拷贝到workapp的conf目录中,并命名为wrapper.conf。
7.修改wrapper.conf配置文件,方法如下:
主要修改以下几项即可:
(1)JVM位置:
wrapper.java.command=C:\jdk1.5.0_07\bin\java
(2)运行参数:如:
wrapper.java.additional.1=-Dprogram.name=run.bat
(3)你的Java程序所需的jar包必须全部在此标明,注意路径准确:
wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=../lib/test_fat.jar
……
(4)你的Wrapper.DLL或wrapper.jar所在的目录
wrapper.java.library.path.1=../lib
(5)MAIN CLASS 此处决定了使用Java Service Wrapper的方式
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
(6)你的Java应用程序的运行类
wrapper.app.parameter.1= com.tes.Testjar
(6)注册为服务的名称和显示名,你可以随意进行设置
wrapper.ntservice.name=testService
wrapper.ntservice.displayname= testService
(7)服务描述信息
wrapper.ntservice.description= testService
8.修改好了以后,运行MyApp.bat即可运行你的java程序,这里可以测试配置的是否正确,如果可以运行,证明配置ok。
9.运行InstallApp-NT.bat可以进行服务的注册,UninstallApp-NT.bat为注销服务。
10.运行完注册服务InstallApp-NT.bat可以在 控制面板-管理程序-服务 中看到你注册的服务名称。(如:testService)
最近想找个软件来控制电脑的关机时间,在网上找了几个,都是可视化界面的可以设置具体的关机时间的软件。由于我想编写的关机程序是运行在别人机器上,只能让该机器在晚上17 点到23 点25 分才上网,到了23 点25 分就可以自动关机。为了让别人感觉不到这个软件的“存在”(免得使用者自己关闭定时关机软件),所以我想把关机软件注册为服务的方式,运行在后台。这里介绍下如何利用javaService 软件把java 程序注册为windows 服务。
一、 利用javaService 注册java 程序为windows 服务
[1] 下载javaService
访问网址http://javaservice.objectweb.org/ 下载windows 版本的javaService 文件,我下载的是JavaService-2.0.10.rar ,目前最新的版本就是“2.0.10 ”。
[2] 安装javaService
解压我们下载下来的javaServices 到一个目录,我是解压到目录“D:/software/JavaService-2.0.10 ”下(解压到任何目录都可以,最好别解压到中文目录,省的出现问题 )
[3] 编写定时关机代码,见第二章的定时关机代码
1) 具体代码参加第二章,类的名字为:
com.test.timer.TimerShutDownWindows
2) 把编写后的java 文件导出为class 的形式,把导出的类放到目录“D:/software/JavaService-2.0.10/classes/com/test/timer ”下。也就是把导出的com 包放到
“D:/software/JavaService-2.0.10/classes” 目录下。
[4] 注册java 程序为windows 服务
进入“D:/software/JavaService-2.0.10 “目录,执行如下命令:
JavaService.exe -install MyShutDownService "%JAVA_HOME%"/jre/bin/server/jvm.dll -Djava.class.path="%JAVA_HOME%"/lib/tools.jar;D:/software/JavaService-2.0.10/classes -start com.test.timer.TimerShutDownWindows
其中“-install “后面的参数为服务的名称,“-start ”参数后边是要启动的类名,“Djava.class.path ”后面参数中的
“D:/software/JavaService-2.0.10/classe ”地址是我的“TimerShutDownWindows ”类存放的路径,实际应用中修改为自己的classPath 即可。
这里需要注意几点:
1) “%JAVA_HOME% ”jdk 目录,如果没有配置jdk 目录,则替换为jdk 的实际绝对地址。
2) -Djava.class.path 是必须的,因为服务启动的时候无法访问系统的CLASSPATH 变量,所以必须在这里声明;如果jar 比较多,为避免写的命令过长,我们可以使用“-Djava.ext.dirs=jars 所在目录”参数。
3) 服务添加之后,可以在命令行中敲入“services.msc ”命令来查看所有服务,并可以对服务的启动类型(自动启动还是手动启动等)进行修改。
[5] 测试
1) 启动服务
当我们注册完服务后,我们可以通过命令“net start MyShutDownService ”来启动该服务,服务启动后会在D 盘根目录生成my_shutdown.log 日志文件。
2) 关闭服务
如果我们要关闭服务,可以通过命令“net stop MyShutDownService ”来关闭该服务。
3) 删除服务
当我们想删除该服务时,可以使用命令“sc delete MyShutDownService ”来删除该服务。
二、 定时关机代码
package com.test.timer;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TimerShutDownWindows {
/* 检测是否需要关机的时间间隔 */
private static long m_nDetectInterval = 5000;
/* 记录上次检测的时间,以毫秒为单位 */
private static long m_lLastMilliSeconds = 0;
/* 可以使用电脑的最小小时 */
private static int m_nUsePCMinHour = 17;
/* 可以使用电脑的最大小时 */
private static int m_nUseComputerMaxHour = 23;
/* 如果分钟超过这个时间,则关机计算机 */
private static int m_nMinutes = 25;
/* 记录日志的文件的保存位置 */
private static String m_sLogFile = "D:" + File.separator
+ "my_shutdown.log";
/* 记录当前系统是否已经启动自动关闭程序 */
private static boolean bHasShutDownPC = false;
/**
* @param args
*/
public static void main(String[] args) {
// 1. 单独开启一个线程去检测
Thread aThread = new Thread(new TimerDetector());
aThread.start();
}
/**
* 定义内部类
*
* @author Administrator
*
*/
static class TimerDetector implements Runnable {
/*
* (non-Javadoc)
*
* @see java.lang.Runnable#run()
*/
public void run() {
// 1. 获取日志文件
PrintWriter out = null;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
out = new PrintWriter(new FileWriter(m_sLogFile, true), true);
} catch (IOException e1) {
out = null;
e1.printStackTrace();
}
// 2. 记录服务启动时间
appendLog(out, " 服务启动时间:" + df.format(new Date()));
while (true) {
// 1. 判断当前系统时间是否被修改过
boolean bShoudShutDownPC = validateShoudShutDownPC(out);
if (bShoudShutDownPC) {
// 验证没通过,强制关机
exectueShutDown(out);
} else {
bHasShutDownPC = false;
}
// 2. 当前线程休眠下
try {
Thread.sleep(m_nDetectInterval);
} catch (InterruptedException e) {
appendLog(out, e.getMessage());
}
}
}
/**
* 验证当前时间是否是需要关机的时间
*
* @return
*/
private boolean validateShoudShutDownPC(PrintWriter _out) {
// 1. 判断是否修改了系统时间
boolean bHasModifySystemTime = detectModifySytemTime(_out);
appendLog(_out, "bHasModifySystemTime :" + bHasModifySystemTime);
if (bHasModifySystemTime) {
return bHasModifySystemTime;
}
// 2. 没有修改系统时间,则判断当前时间是否超过了指定的时间
boolean bShoudSleep = nowIsSleepTime();
appendLog(_out, "bShoudSleep :" + bShoudSleep);
if (bShoudSleep) {
return bShoudSleep;
}
return false;
}
/**
* 判断当前时间是否应该休息的时间
*
* @return
*/
private boolean nowIsSleepTime() {
// 1. 获取当前小时和分钟
Calendar aCalendar = Calendar.getInstance();
int nHour = aCalendar.get(Calendar.HOUR_OF_DAY);
int nMinute = aCalendar.get(Calendar.MINUTE);
// 2. 判断当前小时是否在可以使用PC 的时间内, 最大小时为23
if (nHour < m_nUsePCMinHour) {
return true;
}
// 23 点需要单独判断,超过23 点30 就应该休息
if ((nHour >= m_nUseComputerMaxHour) && (nMinute >= m_nMinutes)) {
return true;
}
// 3. 非休息时间
return false;
}
/**
* 判断是否有人修改了系统时间,如果有人修改了系统时间返回true ,<BR>
* 否则返回false
*
* @return
*/
private boolean detectModifySytemTime(PrintWriter _out) {
// 1. 第一次检测系统时间
if (m_lLastMilliSeconds == 0) {
m_lLastMilliSeconds = System.currentTimeMillis();
return false;
}
// 2. 检测两次时间的差值
long lInteral = System.currentTimeMillis() - m_lLastMilliSeconds;
lInteral = Math.abs(lInteral);
// 3. 判断两次的时间间隔, 两次结果不一定完全等于 m_nDetectInterval ,允许误差为1 分钟
long lMaxInterval = m_nDetectInterval + 60 * 1000;
appendLog(_out, "lInteral :::" + lInteral);
appendLog(_out, "lMaxInterval :::" + lMaxInterval);
if (lInteral > lMaxInterval) {
// 有人修改了系统时间,强制关机
return true;
}
// 4. 只有没人修改时间才记录上次检测时间
m_lLastMilliSeconds = System.currentTimeMillis();
return false;
}
/**
* 在指定的流中写入日志信息
*
* @param _outWriter
* @param _sAppendContent
*/
private void appendLog(PrintWriter _outWriter, String _sAppendContent) {
if (_outWriter == null) {
return;
}
_outWriter.println(_sAppendContent);
}
/**
* 执行关机命令
*/
private void exectueShutDown(PrintWriter _out) {
if (bHasShutDownPC) {
SimpleDateFormat df = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
appendLog(_out, " 系统即将关闭, 当前时间:" + df.format(new Date()));
return;
}
appendLog(_out, " 有人修改了系统时间,系统强制关机!");
// 关机
try {
Runtime.getRuntime().exec(
"shutdown -s -t 120 -c /" 很晚了,该睡觉了,2 分钟后关闭计算机。/"");
} catch (IOException e) {
appendLog(_out, e.getMessage());
}
bHasShutDownPC = true;
}
}
}
有两种方案,一是通过JavaService来运行,二是用exe4j转换成exe程序,分别举例如下:
一、JavaService
1.首先到http://javaservice.objectweb.org/下载JavaService,最新版本为2.0.10
2.解压JavaService-2.0.10.zip,将JavaService.exe拷到要运行的java程序目录下
3.进入命令行,切换到java程序目录,运行
JavaService -install 服务名 jvm.dll文件路径 -Djava.class.path=jar文件路径(如有多个用;隔开) -start 启动类 -out 输出重定向 -err 错误信息重定向 -current 工作目录 -depends 依赖的服务 -description 服务描述信息
例如:
JavaService -install SampleService "%JAVA_HOME%/jre/bin/server/jvm.dll" -Djava.class.path=%CD%/sample.jar;%CD%/mysql-connector-java-3.0.9-stable-bin.jar -start com.test.SampleService -out %CD%/stdout.log -err %CD%/stderr.log -current %CD% -depends mysql -description "测试Java服务"
卸载的时候为:
JavaService -uninstall 服务名
例如:
Javaservice -uninstall SampleService
二、通过exe4j将java程序转换为exe程序
1.首先到http://www.ej-technologies.com/download/exe4j/files.php下载exe4j,按向导安装
2.运行exe4j,1.Welcome,直接按Next→2.project type,这里有两个选择,Regular mode和"JAR in EXE" mode,默认即可(如果程序文件较少的话可以用"JAR in EXE",将所有文件打包成一个exe文件),Next
3.输入应用程序的名字和exe输出目录,Next
4.Executable type选Service,Executable name输入要生成的exe文件名,此处可以勾选Icon file,为生成的exe文件选择一个图标,点击Advanced options→设置输出重定向和错误重定向的文件,Next→Description输入服务描述信息,选择启动类型:自动运行(Auto start),手动运行(Start on demand),依赖的服务(Dependencies),Next到第五步Java invocation
5.Class path添加相应的jar文件,然后选择Main class,Next
6.Mininum version,输入最低要求的java版本,如1.3,然后一直Next到完成
7.安装服务,进入命令行,切换到相应目录,运行生成的exe文件加参数 -install,卸载服务为 -uninstall
其它命令:
-install-demand 安装为手动启动模式
-install-auto 安装为自动启动模式
-start 启动服务
-stop 停止服务
-status 服务启动状态
另外"-"也可以换成"--"或者"/"
三、通过exe4j还有另外一种方法,就是打包为GUI application,然后通过instsrv.exe和srvany.exe运行为windows服务,方法为在exe4j第四步的时候Executable type选GUI application,其它同上
安装为服务的方法,将instsrv.exe和srvany.exe拷入相应目录,进入命令行,切换到相应目录
instsrv 服务名 %CD%/srvany.exe
然后打开注册表,展开"HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/服务名/Parameters"
新建一字符串值Application,输入生成的exe文件的路径
输入services.msc,找到相应服务,调节启动类型为自动,启动服务,OK!
instsrv.exe和srvany.exe下载地址:
http://www.electrasoft.com/srvany/srvany.exe
http://www.electrasoft.com/srvany/instsrv.exe
附:
exe4j是需要注册的,附上一个Exe4J v4.0.2的注册码:L-FLN#79829-19l6l0uowr1kw#585