论坛首页 Java企业应用论坛

应用程序打包jar后实现随系统开机启动

浏览 12200 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (4)
作者 正文
   发表时间:2011-01-23   最后修改:2011-02-18
我们写好的应用程序打包后,怎么让它随系统启动就运行呢?最简单最绿色的方法是把jar包拷贝到开始菜单中的“启动”文件夹下,这样系统启动后程序就可以自动运行了。一般软件中选项设置有“随系统启动”这一项,拷贝的工作肯定由代码实现了。但是jar包路径如果动态的改变了那就有点麻烦了,那得必须获取动态的jar包路径信息
下面的代码可以简单的实现程序随系统启动...
	private final static String DIR = "C:\\Documents and Settings\\All Users\\「开始」菜单\\程序\\启动\\";
	
	//解决路径中空格问题
	private static String formatPath(String path){
		
		if(path==null) return "";
		
		return path.replaceAll(" ", "\" \"");
		
	}
	//设置是否随系统启动
	public static void setRunBySys(boolean b){
		File file = new File(DIR,JarTool.getJarName());
		Runtime run = Runtime.getRuntime();
		try {
			if (b) {
				if (!file.exists()) {
					run.exec("cmd /c copy " + formatPath(JarTool.getJarPath())+ " " + formatPath(DIR));
				}
			} else {
				if (file.exists()) {
					run.exec("cmd /c del " + formatPath(file.getAbsolutePath()));
				}
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
	}


JarTool是自己封装的专门处理Jar包相关信息的类...

不知道为什么不能用IO流来拷贝,难道文件在运行过程中不许进行读写操作。

其实还有巧妙的方法是在“启动”目录下创建个bat批处理文件指向jar包。

但是程序每次启动的时候会弹出命令窗口,虽然是瞬间一闪而过,但就是看起来不爽。

找了些资料,可以用vb脚本来处理:


createobject("wscript.shell").run "XXX.bat",0

将上面的代码保存为vbs格式的文件即可,其中"XXX.bat"是启动jar的批处理,"0"表示隐藏命令行窗口。

现在可以总结一下,先创建一个启动jar的bat文件,然后再“启动”目录下创建一个指向这个bat的vbs脚本文件,这些可以代码实现的,取消随系统启动只要删除脚本就可以了。




   发表时间:2011-01-24  
写个批处理,建个windows任务计划就完事了,何必这么麻烦。
0 请登录后投票
   发表时间:2011-01-24  
什么叫jar包随系统自动启动,干什么用的?没弄明白
0 请登录后投票
   发表时间:2011-01-24  
yongsky 写道
写个批处理,建个windows任务计划就完事了,何必这么麻烦。

虽然能实现但是觉得不可取,比方说你做了个软件给人家用,难道还亲自为他添加任务计划。一般都是选项设置界面的对话框上有个“随系统启动”的复选框,选中后应用就可以随系统启动,不选中则取消。
如同下面:

  • 大小: 141.1 KB
0 请登录后投票
   发表时间:2011-01-24  
evanzzy 写道
什么叫jar包随系统自动启动,干什么用的?没弄明白

这个jar包是项目做好以后打包的结果,双击可以启动执行的。随系统自动启动就是电脑开机后他就自动运行,不需要人为打开。
0 请登录后投票
   发表时间:2011-01-24  
我这两天也考虑写个程序,每天把我的代码备份一份呢,到点了自己备份一下...
0 请登录后投票
   发表时间:2011-01-25  
kinganpo 写道
evanzzy 写道
什么叫jar包随系统自动启动,干什么用的?没弄明白

这个jar包是项目做好以后打包的结果,双击可以启动执行的。随系统自动启动就是电脑开机后他就自动运行,不需要人为打开。

双击jar打开的前提是客户机需要安装JDK,另外.jar类型文件打开模式为Java程序。
正确给用户的做法是用InstallShell或者类似的软件制作对应系统的安装包,安装包包括基本JRE、客户程序、程序相关资源等等。
0 请登录后投票
   发表时间:2011-01-25  
有个工具叫installshield,用msi把jar文件放到scheduler里,可以设置的东西多了去了。
0 请登录后投票
   发表时间:2011-01-25  
不能把程序做成exe的吗?
0 请登录后投票
   发表时间:2011-01-25   最后修改:2011-01-25
kinganpo 写道


不知道为什么不能用IO流来拷贝,难道文件在运行过程中不许进行读写操作。



这个地方我比较关注下,不知道你是写的是什么样子的?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics