[info]模块名称:C:\ Users \ User \ Documents \ NetBeansProjects \ NETBEANS 6.9.1 \ Desktop_apps \ Test2 \ src \ com \ service \ wrapper \ ServiceWrapper.exe
[info]模块INI:C:\ Users \ User \ Documents \ NetBeansProjects \ NETBEANS 6.9.1 \ Desktop_apps \ Test2 \ src \ com \ service \ wrapper \ ServiceWrapper.ini
[info]模块目录: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]工作目录设置为:C:\ Users \ User \ Documents \ NetBeansProjects \ NETBEANS 6.9.1 \ Desktop_apps \ Test2 \ src \ com \ service \ wrapper
[info]配置vm.location:
[info]找到VM:C:\ Program Files(x86)\ Java \ jre7 \ bin \ client \ jvm.dll
[info]扩展类路径:C:\ Users \ User \ Documents \ NetBeansProjects \ NETBEANS 6.9.1 \ Desktop_apps \ Test2 \ build \ classes \
[info]扩展类路径:C:\ Users \ User \ Documents \ NetBeansProjects \ NETBEANS 6.9.1 \ Desktop_apps \ Test2 \ dist \ lib \ WinRun4J.jar
[info]生成的类路径: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]为Native class注册natives
[info]为FFI类注册本机
[错误]无法找到服务类
[错误]无法初始化服务:1
java.lang.NoClassDefFoundError:com / service / wrapper / ServiceWrapper / class 引起:java.lang.ClassNotFoundException:com.service.wrapper.ServiceWrapper。 类
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 =这是Java服务的示例 service.startup = “启动” 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
我错过了什么......
答案 0 :(得分:0)
我相信您在service.ini中使用了两个不兼容的参数。
您必须引入service.class
或main.class
,但不能同时引入。{/ p>
如果您希望您的.exe始终作为服务执行,您必须使用service.class
并在Windows服务管理器中注册它,如下所示:
executable.exe --WinRun4J:RegisterService
如果您希望它是普通应用程序,则必须使用main.class
并正常调用它。
如果你想以两种方式执行它,你必须回到像here那样的回旋处。 CopyPasting来自链接:
我有相同的要求,大约10左右 服务。每个人也必须可以支持人们指挥 行执行,传递“单次运行”模式的可选参数 操作
我只是为每个服务副本创建了一对ini文件 表示每个服务的可执行文件每个服务ini文件是 除了头部之外,它与命令行伙伴相同 如下所示,服务/命令行部分适当地评论:
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和命令行启动运行 使用批处理文件中的以下命令,存储在更多用户中 友好的位置:
%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关闭挂钩完成整个批次为ctrl-c 尽可能安全。)您可以简单地更改启动类if 虽然我觉得没必要,但仍然需要。