Java 是什么原因导致了这样的错误,即;找不到服务类“;对于由WinRun4j包装的服务

Java 是什么原因导致了这样的错误,即;找不到服务类“;对于由WinRun4j包装的服务,java,windows,service,wrapper,winrun4j,Java,Windows,Service,Wrapper,Winrun4j,我在运行WinRun4J包装的jar时出现以下错误: [info] Module Name: C:\Users\User\Documents\NetBeansProjects\NETBEANS 6.9.1\Desktop_apps\Test2\src\com\service\wrapper\ServiceWrapper.exe [info] Module INI: C:\Users\User\Documents\NetBeansProjects\NETBEANS 6.9.1\Desktop_ap

我在运行WinRun4J包装的jar时出现以下错误:

[info] Module Name: C:\Users\User\Documents\NetBeansProjects\NETBEANS 6.9.1\Desktop_apps\Test2\src\com\service\wrapper\ServiceWrapper.exe
[info] Module INI: C:\Users\User\Documents\NetBeansProjects\NETBEANS 6.9.1\Desktop_apps\Test2\src\com\service\wrapper\ServiceWrapper.ini
[info] Module Dir: C:\Users\User\Documents\NetBeansProjects\NETBEANS 6.9.1\Desktop_apps\Test2\src\com\service\wrapper\
[info] INI Dir: C:\Users\User\Documents\NetBeansProjects\NETBEANS 6.9.1\Desktop_apps\Test2\src\com\service\wrapper\
[info] Working directory set to: C:\Users\User\Documents\NetBeansProjects\NETBEANS 6.9.1\Desktop_apps\Test2\src\com\service\wrapper
[info] Configured vm.location:
[info] Found VM: C:\Program Files (x86)\Java\jre7\bin\client\jvm.dll
[info] Expanding Classpath: C:\Users\User\Documents\NetBeansProjects\NETBEANS 6.9.1\Desktop_apps\Test2\build\classes\
[info] Expanding Classpath: C:\Users\User\Documents\NetBeansProjects\NETBEANS 6.9.1\Desktop_apps\Test2\dist\lib\WinRun4J.jar
[info] Generated Classpath: C:\Users\User\Documents\NetBeansProjects\NETBEANS 6.9.1\Desktop_apps\Test2\dist\lib\WinRun4J.jar
[info] VM Args:
[info] vmarg.0=-Djava.class.path=C:\Users\User\Documents\NetBeansProjects\NETBEANS 
6.9.1\Desktop_apps\Test2\dist\lib\WinRun4J.jar
[info] Registering natives for Native class
[info] Registering natives for FFI class
 [err] Could not find service class
 [err] Failed to initialise service: 1
java.lang.NoClassDefFoundError: com/service/wrapper/ServiceWrapper/class
Caused by: java.lang.ClassNotFoundException: com.service.wrapper.ServiceWrapper.
class
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        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)
这是我为这个包装器编写的
service.ini

service.class=com.service.wrapper.ServiceWrapper
service.id=Service_Simulation
service.name=Windows_Java_Wrapped_Service
service.description=This is an Example for Java Service
service.startup="boot"
main.class=com.service.wrapper.ServiceWrapper
classpath.1=C:\Users\User\Documents\NetBeansProjects\NETBEANS 6.9.1\Desktop_apps\Test2\build\classes\
classpath.2=C:\Users\User\Documents\NetBeansProjects\NETBEANS 6.9.1\Desktop_apps\Test2\dist\lib\WinRun4J.jar

我遗漏了什么?

我相信您在service.ini中使用了两个不兼容的参数。 您必须介绍
service.class
main.class
,但不能同时介绍两者

如果希望.exe始终作为服务执行,则必须使用
service.class
并在Windows服务管理器中注册它,如下所示:

executable.exe --WinRun4J:RegisterService
如果希望它是一个普通的应用程序,则必须使用
main.class
并正常调用它

如果你想以两种方式执行它,你必须退回到像这样的迂回处。从链接复制粘贴:

我也有同样的要求,大约10英镑左右 服务。每一个都必须能够支持人们进行指挥 行执行,传递“单次运行”模式的可选参数 手术

我只是为服务的每个副本创建了一对ini文件 表示每个服务的可执行文件。每个服务ini文件都是 与它的命令行合作伙伴相同,除了 如下所示,并对服务/命令行部分进行了适当的注释:

该服务通过Windows SCM和命令行启动运行 从批处理文件中使用以下命令,该批处理文件存储在“更多用户”文件中 友好地点:

%deploymentroot%
是整个过程中使用的环境变量 项目以帮助管理路径。)

上面的批处理命令是这里的关键,因为它告诉winrun4j 包装器使用与默认可执行文件名不同的inin文件。 该服务将从中提取默认名称(service\u name\u svc.ini) 服务二进制文件文件夹

类com.xgs.cfs.services.ServiceControl将其写入 对操作的服务控制回调没有依赖关系 (即,它自动启动,并且所有要求的正常关闭均为 通过Java关闭钩子实现,使整个部分成为ctrl-c 尽可能安全。如果需要,您可以简单地更改startup类 虽然我觉得没有必要,但这是必需的

working.directory=. 
service.class=com.xgs.cfs.services.ServiceControl 
service.id=service_id service.name=Windows Service Name 
service.description=Service Description
#command line app configuration
#main.class=com.xgs.cfs.services.ServiceControl
#console.title=process name
#singleinstance=process
%deploymentroot%/svc_bin/service_name_svc.exe --WinRun4J:ExecuteINI %deploymentroot%/svc_bin/service_name_exe.ini