我已使用Launch4j将java可执行jar转换为Windows可执行文件。我已经将它和jre安装到了Windows 8盒子的c:\ program files(x86)\ mycomany目录中,并在bat文件中以管理员身份执行以下操作(为了使用prunsvc将应用程序作为服务运行):
function joinLobby(){
var ses = Parse.Object.extend("Session");
var query = new Parse.Query(ses);
query.equalTo("Name", document.getElementById("lobby").value);
query.find({
success: function(results) {
console.log("Successfully retrieved " + results.length );
// Do something with the returned Parse.Object values
session = results[0];
addPlayer(session,player);
console.log("session joined: "+session.get("Name"));
console.log("The creator is: "+session.get("Creator").get("Name")); // coming up as undefined
},
error: function(error) {
alert("Error: " + error.code + " " + error.message);
}
});
}
该服务似乎成功安装;但是当我这样做时:
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%
在管理员命令行,没有任何反应。相反,我在Windows事件日志中看到以下内容:
MyService服务以以下特定于服务的方式终止 错误:功能不正确。
答案 0 :(得分:0)
不正确的功能 - 意味着您没有实现方法“停止”,因为设置已设置为PR_STOPMETHOD = stop。所以,如果你没有实现一个停止方法或它不是静态函数。如果您想使用“main”,请保留此设置。并设置PR_STOPPARAMS =停止并在您的主要实现参数“stop”字符串以停止服务。
答案 1 :(得分:0)
与Java结合使用的“错误函数”通常表示所使用的JVM与调用服务之间存在32位/ 64位不匹配。
Using prunsrv to create a service解释了成功的道路,第8章告诉您所有可能导致可怕的“错误:函数错误”的原因。因此请确保: