用一个简单的程序测试nssm:
import javax.swing.JOptionPane;
// a simple program to test if i can get nssm to work
public class Test {
public static void main(String[]args) throws InterruptedException {
while(true) {
JOptionPane.showMessageDialog(null, "Test");
Thread.sleep(5000);
}
}
}我在上面的程序中创建了一个jar文件,将nssm添加到PATH中,并使用以下代码创建了一个服务:
C:\Users\ProgrammerSausage>nssm install servicetest "C:\ProgramFiles\Java\jre1.8.0_162\bin\java.exe" "-jar C:\Users\ProgrammerSausage\Documents\serviceTest.jar"
Administrator access is needed to install a service.我输入了我的密码-它似乎起作用了。检查任务管理器服务,它在那里,但“停止”,我启用查看可能发生的事情,说它正在运行。但是什么都没有。我做错了什么?
编辑:
我已将控制台更改为admin。创建了一个.bat (它自己工作):
@echo off
java -jar C:\Users\ProgrammerSausage\Documents\serviceTest.jar但是,如果我尝试使用NSSM安装批处理文件,它仍然只会打开一个幻影服务,该服务除了显示它正在运行之外,什么也不做。
C:\Windows\system32>nssm install servicetestfour "C:\Users\ProgrammerSausage\Documents\serviceTest.bat"
Service "servicetestfour" installed successfully!我发现有趣的是,我可以创建任何目录的幻影服务,例如:
C:\Windows\system32>nssm install servicetestfive "C:\Users\ProgrammerSausage\"
Service "servicetestfive" installed successfully!呃什么?然而,主要的区别是,从随机目录创建的服务不会启动。这表明它可以运行批处理和jar文件,但我没有看到JOptionPane弹出窗口?
编辑:
好的,我已经更改了程序的代码,因为正如所建议的,它可能不允许gui显示,包括一个简单的io调用:
public static void main(String[]args) throws InterruptedException {
File f = new File("C:\\Users\\ProgrammerSausage\\Documents\\test");
while(true) {
if(!f.exists()) {
f.mkdir();
}
JOptionPane.showMessageDialog(null, "Test");
Thread.sleep(5000);
}
}这非常有趣,因为虽然我已经启用了
'Allow service to interact with desktop'JOptionPane没有显示,但是mkfile()方法仍然被调用,尽管只调用了一次:这意味着程序正在运行,但是JOptionPane隐藏在后台,抓取模式控制并停止循环,如果gui被移除,那么io就能完美地工作。
发布于 2018-08-10 09:53:18
假设您创建的jar是一个可运行的jar (可以使用java -jar从终端运行)...
我建议创建一个运行jar的脚本...
run_serviceTest.bat:
@echo off
java -jar C:\Users\ProgrammerSausage\Documents\serviceTest.jar然后,您可以基于该脚本创建nssm服务:
nssm install servicetest run_serviceTest.bat尝试在具有管理员权限的终端上运行该命令。
Nssm将询问“当前目录”以启动服务。选择包含jar的目录。
我看到您的服务使用JOptionPane,这是一个图形用户界面组件。如果您希望您的服务与桌面交互,则需要在服务管理员中启用它:

您还可以从nssm启用桌面交互:

服务通常不与桌面交互。
https://stackoverflow.com/questions/51777777
复制相似问题