`
kinganpo
  • 浏览: 51435 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

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

    博客分类:
  • java
阅读更多
我们写好的应用程序打包后,怎么让它随系统启动就运行呢?最简单最绿色的方法是把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脚本文件,这些可以代码实现的,取消随系统启动只要删除脚本就可以了。




分享到:
评论
14 楼 kinganpo 2011-08-05  
daly1987 写道
仅仅是拷贝Jar包,怎么自动执行?

private final static String DIR = "C:\\Documents and Settings\\All Users\\「开始」菜单\\程序\\启动\\";
拷贝到这个目录下不就可以随系统启动自动运行了么。。
13 楼 daly1987 2011-08-04  
仅仅是拷贝Jar包,怎么自动执行?
12 楼 wuliaolll 2011-03-15  
不需要这么复杂,打包工具直接可以设置开机启动,打成一个安装程序就行了,环境的部署不应该是你业务应用程序去做的。
11 楼 HeDYn 2011-01-31  
phoenixup 写道
双击jar打开的前提是客户机需要安装JDK

装JRE就行吧
10 楼 xiaohui886688 2011-01-26  
phoenixup 写道
kinganpo 写道
evanzzy 写道
什么叫jar包随系统自动启动,干什么用的?没弄明白

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

双击jar打开的前提是客户机需要安装JDK,另外.jar类型文件打开模式为Java程序。
正确给用户的做法是用InstallShell或者类似的软件制作对应系统的安装包,安装包包括基本JRE、客户程序、程序相关资源等等。


关注下这个软件的用法。
9 楼 onlylau 2011-01-25  
kinganpo 写道


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



这个地方我比较关注下,不知道你是写的是什么样子的?
8 楼 真liuyake 2011-01-25  
不能把程序做成exe的吗?
7 楼 ray_linn 2011-01-25  
有个工具叫installshield,用msi把jar文件放到scheduler里,可以设置的东西多了去了。
6 楼 phoenixup 2011-01-25  
kinganpo 写道
evanzzy 写道
什么叫jar包随系统自动启动,干什么用的?没弄明白

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

双击jar打开的前提是客户机需要安装JDK,另外.jar类型文件打开模式为Java程序。
正确给用户的做法是用InstallShell或者类似的软件制作对应系统的安装包,安装包包括基本JRE、客户程序、程序相关资源等等。
5 楼 生活小丑 2011-01-24  
我这两天也考虑写个程序,每天把我的代码备份一份呢,到点了自己备份一下...
4 楼 kinganpo 2011-01-24  
evanzzy 写道
什么叫jar包随系统自动启动,干什么用的?没弄明白

这个jar包是项目做好以后打包的结果,双击可以启动执行的。随系统自动启动就是电脑开机后他就自动运行,不需要人为打开。
3 楼 kinganpo 2011-01-24  
yongsky 写道
写个批处理,建个windows任务计划就完事了,何必这么麻烦。

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

2 楼 evanzzy 2011-01-24  
什么叫jar包随系统自动启动,干什么用的?没弄明白
1 楼 yongsky 2011-01-24  
写个批处理,建个windows任务计划就完事了,何必这么麻烦。

相关推荐

    CentOS7设置jar应用程序开机启动的方法

    总的来说,设置jar应用程序在CentOS7上开机启动,主要是通过创建启动脚本、设置环境变量和修改`rc.local`文件来实现的。这种方法简单实用,适用于许多不使用自动化部署工具的情况。希望这个指南对你有所帮助,如果你...

    java 开机自启动 完整工程

    - JSW是一个用于将Java应用程序包装为操作系统服务的工具,它提供了跨平台的服务管理功能。 2. **使用System V或Upstart服务**(针对Linux): - 在Linux环境下,可以创建System V init脚本或者使用Upstart配置来...

    jar windows 自启动包

    标题中的“jar windows 自启动包”指的是在Windows操作系统中,如何让一个Java应用程序(通常以.jar文件形式存在)能够自启动。这涉及到Windows服务的概念,Java的可执行包装技术,以及可能使用的第三方工具。 首先...

    Centos系统里运行java的jar启动脚本

    在Linux系统,特别是CentOS 7这样的服务器环境中,运行Java应用程序通常涉及到打包成JAR文件的程序。本文将深入探讨如何在CentOS 7中创建并执行Java的JAR启动脚本,以及如何配置该脚本使其能在系统开机时自动运行。 ...

    exe4j打jar包exe工具

    exe4j是一款强大的Java应用程序打包工具,主要用于将Java的jar文件转换为Windows平台下的可执行文件(exe)。这个工具使得Java开发者能够方便地将他们的Java应用程序分发给那些可能没有安装Java运行环境(JRE)的...

    springboot项目启动bat脚本

    7. **自动启动**: 脚本可以配置为系统启动时自动运行,例如通过将`startup.bat`添加到Windows的任务计划程序,实现服务的自启动功能,确保应用在系统开机时即开始提供服务。 8. **使用bat脚本的优势**: 它提供了...

    SpirngBoot jar 包windows自动部署

    SpringBoot的应用程序通常被打包为一个可执行的jar文件,这个jar包含了运行应用程序所需的所有依赖,包括JVM本身。这种打包方式使得SpringBoot应用可以在任何支持Java的环境中运行,无需额外的配置或服务器环境。 ...

    开机自启.rar-redis,docker,java开机自启脚本

    Docker是一种流行的容器化平台,它允许开发人员打包应用程序及其依赖项到轻量级容器中。在Docker中,服务开机自启涉及创建一个Docker Compose文件(例如`docker-compose.yml`),定义服务的启动配置。然后,通过`...

    Spring Boot应用集成打包部署.docx

    Spring Boot 通过提供预设的配置和自动配置功能,使得开发者能够快速搭建应用程序,而无需大量的手动配置。它支持与多种流行的技术集成,如MyBatis、Redis 和 ActiveMQ,极大地提高了开发效率。 在集成MyBatis时,...

    Linux下启动JAVA

    在Linux环境下启动Java应用程序是许多开发人员和系统管理员日常任务的一部分。Java的可移植性使得它能在各种操作系统上运行,而Linux作为服务器平台的广泛使用,使得了解如何在该平台上启动Java变得至关重要。本文将...

    jarrun.zip

    通过使用Wrapper,开发者可以轻松地将Java的`jar`包配置为开机启动、自动恢复等特性,提升应用程序的稳定性。 下面我们将详细探讨如何使用`Windows Service Wrapper`将`jar`包转换为Windows服务,以及`jarrun`这个...

    shell脚本发布jar包服务,war包服务

    在IT行业中,shell脚本是Linux或Unix系统中用于自动化任务的强大工具,而jar和war文件则是Java应用程序的标准打包格式。这篇博客文章标题为“shell脚本发布jar包服务,war包服务”,意味着它将介绍如何使用shell脚本...

    wrapper-windows-x86-64-3.5.14-windows系统服务打包,64位可用

    标题中的"wrapper-windows-x86-64-3.5.14-windows系统服务打包,64位可用"指的是一个特定版本的Java可执行包装器(Wrapper),它用于将Java应用程序转换为Windows服务,以便在操作系统启动时自动运行。这里的"3.5.14...

    开机自动截屏并发邮件

    其中`SendScreen.jar`是包含截屏和邮件发送逻辑的Java应用程序。 源代码通常包括实现上述功能的Java类,可能包括一个使用`Robot`类进行截屏的类和一个使用JavaMail API发送邮件的类。开发者可能会将这些类打包成jar...

    window脚本.zip

    将启动脚本(如start.bat)复制到这个路径下,可以实现系统启动时自动运行该脚本,从而启动Java服务。 5. **Windows自启动机制**:Windows系统提供了多种方法来实现程序自启动,如注册表项(HKCU\Software\...

    fxlauncher:JavaFX 应用程序的自动更新启动器

    FXLauncher 是一个 18Kb 的 jar,可用于启动您的应用程序。 它知道您托管所有应用程序资源的应用程序存储库的位置。 请参阅的清单示例。 FXLauncher 将在每次启动时查找远程存储库以检查清单的更新版本。 检索...

    agent-linux.rar

    然后,我们需要执行以下命令来加载、启动服务并设置开机启动: ```bash sudo systemctl daemon-reload sudo systemctl start agent sudo systemctl enable agent ``` 如果需要取消开机自启动,可以使用: ```bash...

    java的jar注册成window服务

    JAR文件是Java平台的标准归档格式,它允许将多个类文件和其他资源打包到一个文件中。要使JAR文件在Windows上作为服务运行,我们需要借助一些工具,例如`WinSW`(Windows Service Wrapper)。 `WinSW`是一个开源项目...

Global site tag (gtag.js) - Google Analytics