【问题标题】:prunsvc can't run java executable as service on Windows 8.1prunsvc 无法在 Windows 8.1 上将 java 可执行文件作为服务运行
【发布时间】:2016-01-21 03:36:10
【问题描述】:

我已使用 Launch4j 将 java 可执行 jar 转换为 Windows 可执行文件。我已将它和 jre 安装到 Windows 8 框的 c:\program files (x86)\mycomany 目录中,并在 bat 文件中以管理员身份执行以下操作(为了使用 prunsvc 将应用程序作为服务运行):

    rem determine the full path to this bat file
    set thispath=%~dp0

    set SERVICE_NAME=MyService
    set PR_INSTALL=%thispath%prunsrv.exe

    REM set service stdout and stderr
    set PR_LOGPATH=%thispath%
    set PR_STDOUTPUT=%thispath%stdout.txt
    set PR_STDERROR=%thispath%stderr.txt
    set PR_LOGLEVEL=Error

    REM path to java
    set PR_JVM="%thispath%jre1.8.0_45\bin\client\jvm.dll"
    set PR_CLASSPATH="%thispath%jre1.8.0_45\bin\MyService.exe"

    REM Startup configuration
    set PR_STARTUP=auto
    set PR_STARTMODE=jvm
    set PR_STARTCLASS=com.mycompany.mainclass
    set PR_STARTMETHOD=start

    REM Shutdown configuration
    set PR_STOPMODE=jvm
    set PR_STOPCLASS=com.mycompany.mainclass
    set PR_STOPMETHOD=stop

    REM JVM configuration
    set PR_JVMMS=256
    set PR_JVMMX=1024
    set PR_JVMSS=4000
    set PR_JVMOPTIONS=-Duser.language=EN;-Duser.region=en

    set PR_DESCRIPTION="My Service Description"

    "%PR_INSTALL%" install %SERVICE_NAME% 

服务似乎安装成功;但是当我这样做时:

prunsrv.exe start myservice

以管理员身份在命令行中,没有任何反应。相反,我在 Windows 事件日志中看到以下内容:

MyService 服务因以下特定服务而终止 错误:函数不正确。

【问题讨论】:

    标签: java windows service prunsrv


    【解决方案1】:

    与 Java 结合使用的“函数不正确”通常表示使用的 JVM 和调用服务之间存在 32 位/64 位不匹配。

    Using prunsrv to create a service 解释了成功之路,第 8 章告诉你所有可能的原因,你可能会得到可怕的“错误:不正确的函数”。所以请确保:

    • prunsrv.exe 已安装为正确的架构:32 位或 64 位,具体取决于 Windows 架构
    • 运行命令行时,路径和包含空格的选项用双引号括起来
    • JVM参数参考正确的JDK/JRE安装
    • 日志文件文件夹、stdout.out 和 stderror.out 日志文件必须可访问以进行写入

    【讨论】:

      【解决方案2】:

      函数不正确 - 表示您没有实现方法“stop”,因为设置设置为 PR_STOPMETHOD=stop。所以,如果你还没有实现 stop 方法或者它不是静态函数。如果您想改用“main”,请保留此设置。并设置 PR_STOPPARAMS=stop 并在您的 main 中实现参数“stop”字符串以停止服务。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-18
        • 1970-01-01
        • 2010-11-18
        • 2014-05-28
        • 2022-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多