首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是什么导致WinRun4j包装的服务出现“找不到服务类”的错误?

是什么导致WinRun4j包装的服务出现“找不到服务类”的错误?
EN

Stack Overflow用户
提问于 2013-06-09 09:07:05
回答 1查看 2.7K关注 0票数 0

在运行由WinRun4J包装的jar时,我有以下错误:

代码语言:javascript
复制
[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 ..。

代码语言:javascript
复制
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

我错过了什么?

EN

回答 1

Stack Overflow用户

发布于 2014-05-13 12:18:22

我相信您在service.ini中使用了两个不兼容的参数。您必须引入service.classmain.class,但不能两者兼而有之。

如果希望将.exe始终作为服务执行,则必须使用service.class并将其注册到Windows中,如下所示:

代码语言:javascript
复制
executable.exe --WinRun4J:RegisterService

如果您希望它是一个正常的应用程序,您必须使用main.class并正常调用它。

如果您想以两种方式执行它,您必须回到类似one 这里这样的环形交叉路口。来自链接的CopyPasting:

我也有同样的要求,大约有10项服务。每个操作还必须支持人员执行命令行,传递“单运行”操作模式的可选参数。 我只是为代表每个服务的服务可执行文件的每个副本创建了一对ini文件。每个服务ini文件与它的命令行合作伙伴是相同的,除了下面的头部之外,服务/命令行部分酌情进行注释:

代码语言:javascript
复制
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

该服务是从Windows SCM运行的,命令行启动使用一个批处理文件中的以下命令,该命令存储在一个更友好的用户位置:

代码语言:javascript
复制
%deploymentroot%/svc_bin/service_name_svc.exe --WinRun4J:ExecuteINI %deploymentroot%/svc_bin/service_name_exe.ini

(%deploymentroot%是在整个项目中使用的一个环境变量,用于帮助管理路径。) 上面的批处理命令是这里的关键,因为它告诉winrun4j包装程序使用与默认可执行文件名不同的inin文件。该服务将从服务二进制文件文件夹中提取默认名称(service_name_svc.ini)。 它编写的类com.xgs.cfs.services.ServiceControl使其不依赖于服务控件回调进行操作(也就是说,它会自动启动,所有所需的正常关闭都是通过Java关机实现的,这使得整个过程尽可能地安全。)如果需要的话,您可以简单地更改启动类,尽管我认为它是不必要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17008118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档