java程序服务不能启动不了_JavaService.exe注册的windows服务无法启动问题
最近開發(fā)了個(gè)java程序,打成 jar 包想要在windows后臺(tái)運(yùn)行,于是使用JavaService.exe進(jìn)行windows服務(wù)注冊(cè),服務(wù)注冊(cè)很成功,但是在啟動(dòng)時(shí)顯示“服務(wù)無法啟動(dòng)”,為此耗費(fèi)了大量的時(shí)間與精力,終于發(fā)現(xiàn)問題所在,特此記錄。
為了排除各種干擾因素,專門開發(fā)了個(gè)簡單的java程序用于測(cè)試,查找問題原因。測(cè)試程序非常簡單,就是循環(huán)打印當(dāng)前時(shí)間,如下所示:
點(diǎn)擊(此處)折疊或打開
package com.example; import java.time.LocalDateTime; public class demo { public static void main(String[] args) { do {
System.out.println(LocalDateTime.now()); try {
Thread.sleep(1000);
} catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace();
}
} while (true);
}
}
接下來,打 jar 包 test.jar(打包方法不是重點(diǎn),省略)
有了 jar 包,開始注冊(cè)windows服務(wù),服務(wù)注冊(cè)成功,結(jié)果如下:
點(diǎn)擊(此處)折疊或打開
C:\Users\xxx\Desktop\JavaService-2.0.10>JavaService.exe -install test "%JAVA_HOME%"\jre\bin\server\jvm.dll -Djava.class.path=C:\Users\xxx\Desktop\test.jar;"%JAVA_HOME%"\lib\tools.jar -Xms64M -Xmx512M -start com.example.demo
The test automatic service was successfully installed
啟動(dòng)服務(wù),報(bào)錯(cuò):“test 服務(wù)無法啟動(dòng)”
點(diǎn)擊(此處)折疊或打開
C:\Users\xxx\Desktop\JavaService-2.0.10>net start test
test 服務(wù)正在啟動(dòng) .
test 服務(wù)無法啟動(dòng)。
服務(wù)沒有報(bào)告任何錯(cuò)誤。
請(qǐng)鍵入 NET HELPMSG 3534 以獲得更多的幫助。
程序是可以正常運(yùn)行的,使用 .bat 批處理腳本也可以啟動(dòng),但是使用JavaService.exe注冊(cè)的服務(wù)就是無法啟動(dòng)。
測(cè)試程序沒有使用任何第三方庫,排除庫相關(guān)的問題;檢查JAVA_HOME環(huán)境變量,沒有問題;JAVA_HOME環(huán)境變量中存在空格問題,加雙引號(hào)即可(即命令行中的
"%JAVA_HOME%"),不是這個(gè)問題;cmd.exe是以管理員身份運(yùn)行的,不是管理員權(quán)限問題。各種辦法都試過了,開始懷疑JavaService.exe有bug或者版本兼容問題,找到下載地址,這個(gè)程序最新版2.0.10都是2007年的,都十多年了,不可能有這樣嚴(yán)重的bug這么多年過去了程序還沒更新,2.0.10版網(wǎng)上有人也在用,也沒說有問題啊!最后看到有人用JavaService_2_0_10-amd64這個(gè)版本,找來試試吧,死馬當(dāng)活馬醫(yī)了,結(jié)果這一試不要緊
,居然啟動(dòng)成功了!
如果使用的是64位版本的Java,JavaService.exe也要用64位版本,切記!!!JavaService.exe下載頁面的文件排列順序很讓人無語,下載過好幾次都沒有注意到64位版本的存在,尤其是我使用的2.0.10版,64位版本竟然在最下邊,不拉到底根本就看不到!
補(bǔ)充:測(cè)試程序 demo 的服務(wù) test 啟動(dòng)成功,但自己實(shí)際要運(yùn)行的程序還是不能啟動(dòng),原因是 JavaService?-start
參數(shù)設(shè)置不對(duì),我的程序是個(gè)springboot項(xiàng)目,啟動(dòng)類是“org.springframework.boot.loader.JarLauncher”,-start
參數(shù)改過來就好了。
最后,附上JavaService.exe下載地址:
總結(jié)
以上是生活随笔為你收集整理的java程序服务不能启动不了_JavaService.exe注册的windows服务无法启动问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 逻辑表达式 布尔_使用基本逻辑
- 下一篇: java信息管理系统总结_java实现科