簡體   English   中英

java.lang.NoClassDefFoundError procrun

[英]java.lang.NoClassDefFoundError procrun

我試圖通過 procrun 使我的 Java 應用程序成為 Windows 服務。 但是當我啟動服務時出現以下錯誤:

2019-06-07 17:19:25 Commons Daemon procrun stderr initialized
java.lang.NoClassDefFoundError: SaveData 
Caused by: java.lang.ClassNotFoundException: SaveData 
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
Exception in thread "main" 

2019-06-07 17:19:25] [error] [25304] FindClass SaveData  failed
[2019-06-07 17:19:25] [error] [21836] Failed to start Java
[2019-06-07 17:19:25] [error] [21836] ServiceStart returned 4
[2019-06-07 17:19:25] [info]  [ 8688] Run service finished.
[2019-06-07 17:19:25] [info]  [ 8688] Commons Daemon procrun finished

有人能幫我嗎? 謝謝你

用於安裝的文件批處理

set SERVICE_NAME=TestService
set PR_INSTALL=C:\Users\sergi\Desktop\SaveData\prunsrv.exe
REM Service log configuration 
set PR_LOGPREFIX=%SERVICE_NAME% 
set PR_LOGPATH=%~dp0%
set PR_STDOUTPUT=%~dp0%\stdout.txt 
set PR_STDERROR=%~dp0%\stderr.txt 
set PR_LOGLEVEL=Error   
REM path to java installation
set PR_JVM=C:\Program Files\Java\jre1.8.0_191\bin\server\jvm.dll
set PR_CLASSPATH=C:\Users\sergi\Desktop\SaveData\testservice.jar
REM Startup configuration
set PR_STARTUP=auto
set PR_STARTMODE=jvm
set PR_STARTCLASS=SaveData 
set PR_STARTMETHOD=main
REM Shutdown configuration 
set PR_STOPMODE=jvm 
set PR_STOPCLASS=SaveData
set PR_STOPMETHOD=main
REM JVM configuration 
set PR_JVMMS=256 
set PR_JVMMX=1024 
set PR_JVMSS=4000 
REM JVM options 
set prunsrv_port=8080 
set prunsrv_server=localhost
REM Install service 
C:\Users\sergi\Desktop\SaveData\prunsrv.exe //IS//%SERVICE_NAME%

如果您使用的是 Springboot 之類的技術,它有自己的啟動器。 檢查您的 jar 中的 Manifest 文件,您會在標簽“Main-Class”下找到哪個是您的 jar 的真正入口點。 例如,對於 Springboot,您會發現類似

Manifest-Version: 1.0
Implementation-Version: 1.1.0-SNAPSHOT
Spring-Boot-Version: 2.1.0.RELEASE
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.yourcompany.application.YourApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/

在啟動 YourApplication 之前,Springboot 必須為框架初始化一切,所以這個 jar 的入口點將是 JarLauncher 類。 因此,在這種情況下,您應該將設置更改為

set PR_STARTCLASS=org.springframework.boot.loader.JarLauncher

這應該足以啟動您的服務(這是您的問題)。 如果您還想處理 STOP 服務信號,請查看: Spring boot JAR as windows service。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM