无法运行用户服务。例外:无法启动Java,ServiceStart返回4 [英] Unable to run user service. Exception: Failed to start Java, ServiceStart returned 4

查看:1202
本文介绍了无法运行用户服务。例外:无法启动Java,ServiceStart返回4的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 http教程创建了一项服务://web.archive.org/web/20090228071059/http://blog.platinumsolutions.com/node/234

我创建的文件为下面:

C:\MyService1

\bin
    \myService1.exe
    \myService1w.exe
\classes
    \com\services\MyService1.class
    \HelloWorld.jar
\logs

现在,当我执行myService1.exe时,服务还没有开始。
我在日志中收到消息

Now when I execute myService1.exe, service is not getting started. I am getting below message in my log

[2015-06-02 15:23:29] [info]  [ 3968] Commons Daemon procrun (1.0.15.0 32-bit) started
[2015-06-02 15:23:29] [info]  [ 3968] Running 'MyService1' Service...
[2015-06-02 15:23:29] [info]  [ 4204] Starting service...
[2015-06-02 15:23:29] [error] [ 5372] FindClass com/services/MyService1 failed
[2015-06-02 15:23:29] [error] [ 4204] Failed to start Java
[2015-06-02 15:23:29] [error] [ 4204] ServiceStart returned 4
[2015-06-02 15:23:29] [info]  [ 3968] Run service finished.
[2015-06-02 15:23:29] [info]  [ 3968] Commons Daemon procrun finished

在我的stderror文件中,报告如下:

In my stderror file, below is reported:

2015-06-02 15:23:29 Commons Daemon procrun stderr initialized
java.lang.NoClassDefFoundError: com/services/MyService1 (wrong name: services/MyService1)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
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)
Exception in thread "main" 

我的环境变量如下:

 CLASSPATH: .;%JAVA_HOME%\jre\lib;
 JAVA_HOME: C:\Program Files\Java\jdk1.7.0;
 Path: %JAVA_HOME%\bin;

当我查看事件查看器时,我得到:

When I check Event Viewer, I get:


MyService1服务因服务特定错误而终止系统无法打开文件。

The MyService1 service terminated with service-specific error The system cannot open the file.

I搜索了很多服务程序实际应该包含但没有运气的信息。

I searched a lot for what a service program should actually contain but no luck.

推荐答案

我做了以下更改以使我的服务成功运行。

I made bellow changes to make my service work successfully.

文件夹结构:

C:\MyService1
    \myService1.exe
    \myService1w.exe
    \MyService1.class
    \HelloWorld.jar
    \logs

Java类(守护程序类):

Java Class (Daemon Class):


  • 创建默认包中的java类

  • 该类有两个静态方法:start()和stop()

  • start()应该有一个无限循环

以下是我班级的片段。

static boolean isRunning = true;
static boolean isJobsRunning = false;

@SuppressWarnings("static-access")
public static void start(String []args) {
    String command = "run.bat";
    System.out.println("Started JobServices successfully");
    while(isRunning){
        if(!isJobsRunning) { //the job should run only once after the service is started
            try {
                System.out.println("Running batch file");
                Runtime.getRuntime().exec(command);
                isJobsRunning = true;
                System.out.println("Executed batch file successfully");
            } catch (IOException e) {
                System.err.println("Unable to execute Jobs jar");
                e.printStackTrace();
            }
        }
    }
    System.out.println("Completed JobService");

}

public static void stop(String args[]) {
     if(!isRunning) 
         return;

     isRunning = false;
     System.out.println("JobService Stopped successfully");
}

帮助我使我的服务处于运行状态的链接: http://developeriq.in/articles/2012/ may / 01 / transformationing-java-programs-into-windows-services-u /

Link that helped me to get my service in running state: http://developeriq.in/articles/2012/may/01/transforming-java-programs-into-windows-services-u/

这篇关于无法运行用户服务。例外:无法启动Java,ServiceStart返回4的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆