当前位置: 首页 > 知识库问答 >
问题:

启动时运行Jar文件?

袁翔
2023-03-14

我有一个Java应用程序,它位于我编译为可执行jar文件的系统托盘中。我想在我的程序中添加添加到系统启动项的选项。

由于我不知道有什么统一的方法可以为所有操作系统做到这一点,我假设我必须为我打算支持的每个操作系统编写代码,所以我从Windows开始。

当我试图使用此处可用的代码将其添加到注册表中时,我发现在Windows 7和8下,除非我具有管理员权限(通过从提升的命令提示符运行),否则我对注册表的编辑不适用。

然后,我花了一天的时间试图弄清楚如何让Jar以管理员权限重新启动,然后我放弃了这种黑客解决方法。

我试图实现的任务能否完成,如果可以,如何完成?

共有2个答案

刁浩言
2023-03-14

解决用户权限问题不是一个好主意。注册表项是首选方式。还要记住,jar本身不是可执行的,它需要jvm,所以您可能需要使用包装器并注册它。

商经业
2023-03-14

在大多数情况下,您实际上希望添加在用户登录时自动启动的功能,而不是在系统启动时。对于windows,如果在以下位置添加注册表项:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

当作为普通用户运行时,此位置不会遇到权限问题,并且在Windows下已经支持了很长时间(我认为这里是Windows 95的时间框架),因此应该是所有系统的安全更改。

对于Mac OS X,您需要在$HOME/Library/LaunchAgents中创建启动代理列表。守护程序和服务文档详细介绍了如何构造此文件。

 类似资料:
  • 我知道以前也有人问过类似的问题。但是不知何故,我无法让我的工作成功。以下是我已经尝试过的步骤。 > 我创建了一个bat文件为并放入启动文件夹中。它适用于当前用户。这没有帮助,因为我想在所有用户登录PC后为他们运行此文件。 我以HKEY\U local\U machine的身份创建了关键价值 所以我有windows 10 64位计算机和需要放在这些计算机上的jar文件。任何用户登录后,都需要运行ja

  • 我想让一个批处理文件在启动时运行在我的Windows10机器上。为了实现这一点,我在以下文件中设置了批处理文件startup.bat的快捷方式: 用户->用户名->AppData->漫游->Microsoft->Windows->开始菜单->程序->启动 因为这是在运行命令框中键入“shell:startup”时出现的路径。我正尝试在批处理文件中运行以下命令: 它应该将右侧的文件路径替换为“w:”

  • 当我运行访问目录中其他文件的jar文件时,我得到以下: 线程“main”java.nio.file.nosuchfileException异常:src\filetobeaccessed.txt.lck在sun.nio.fs.windowsException.translateToioException(未知源)在sun.nio.fs.windowsException.reshrowasioExce

  • 我有一个简单的Java项目,它有一个文件输入。Java语言输入代码。java是这样的- 现在,我已经通过导出在Eclipse中创建了一个可执行的jar文件- 现在,当我尝试通过命令提示符打开它时,它工作得非常好。 但是,当我双击runnable jar文件时,我希望打开命令提示符。这里有什么问题? 谢谢

  • 问题内容: 为什么用Java这么难?如果要使用任何类型的模块系统,则需要能够动态加载JAR文件。有人告诉我,有一种方法可以通过编写自己的方法来完成,但这对于(至少在我看来)应该像调用以JAR文件作为其参数的方法一样容易的事情来说是很多工作。 对执行此操作的简单代码有何建议? 问题答案: 很难的原因是安全性。类加载器是不可变的。你不应在运行时随意向其添加类。实际上,我很惊讶能与系统类加载器一起使用。

  • 问题内容: 为什么用Java这么难?如果要使用任何类型的模块系统,则需要能够动态加载JAR文件。有人告诉我,有一种方法可以通过编写自己的方法来完成,但这对于(至少在我看来)应该像调用以JAR文件作为其参数的方法那样容易的事情来说是很多工作。 问题答案: 很难的原因是安全性。类加载器是不可变的。您不应在运行时随意向其添加类。实际上,我很惊讶能与系统类加载器一起使用。这是制作自己的子类加载器的方法: