我创建了一个需要作为服务运行的 Java 应用程序。对于服务包装器,我尝试使用 tanuki 和其他包装器软件。现在,我的应用程序确实作为服务运行 - 但是,它在 SYSTEM 下作为服务运行,而不是在当前登录的用户下运行。
我的应用程序有一个 UI,它不显示应用程序何时作为服务运行。我怀疑这是否已经发生,因为该服务在 SYSTEM 下运行,而不是在当前登录的用户下运行。当我运行应用程序(没有将其作为服务安装)时,UI 确实出现了,我可以看到 java 进程在当前用户的 id 下运行,而在作为服务安装时它在 SYSTEM 下运行。
现在,如果没有 UI,我的应用程序就什么都没有了。当系统启动并且 UI 也需要显示时,我需要应用程序作为服务运行。
有没有人试图做我在这里做的事情并且遇到过类似的问题。如果是这样,您是如何解决的?有没有我可以使用的不同的包装服务并且没有这个问题。
Tanuki 的文档确实解释了将 java 应用程序设置为服务,但没有讨论带有 UI 的 java 应用程序并在当前登录的用户下运行它。
更新
只是为了让这里的人们对我想要完成的工作有更多的了解——我试图在我的应用程序中实现的行为类似于 Dropbox 或 Yahoo Messenger 或任何其他软件的行为Windows 启动并继续在后台运行,允许用户使用系统托盘图标与其交互. 所以基本上所有这些都是用 Java/Swing 构建的。现在,当涉及到应用程序的部署时——我可以独立运行它,但运行 jar 文件或为其创建和运行可执行包装器。但是,我希望该软件从 Windows 启动开始并继续作为服务在后台运行,同时允许用户进行更改并通过它设置的系统托盘图标调出 UI 与它进行交互。截至目前,它确实作为服务成功运行。它执行理想情况下应该执行的所有操作 - 只是没有系统托盘图标来调出 UI 并对其配置进行更改。
更新 - 2
好的..我尝试了高级安装程序,它确实为我打包了所有内容,以便为 Windows 生成一个 exe 安装程序。现在我只需要自动启动软件。谁能帮我这个?我在高级安装程序中没有看到自动让程序自动添加到自动启动中的选项。
链接到 tanuki 的文档 http://wrapper.tanukisoftware.com/doc/english/faq.html