将Jetty 7.6作为Windows服务运行时出现ClassNotFoundException

时间:2013-06-03 10:42:33

标签: windows service jetty

我查看了@crowne撰写的解决方案: Running Jetty 7 as Windows Service

我用来安装服务的命令:

  

bin \ JettyService // IS // JettyService --DisplayName =“Jetty Service”   --Install = D:\ Jetty-7.6 \ bin \ JettyService.exe --LogPath = D:\ Jetty-7.6 \ logs --LogLevel = Debug --StdOutput = auto --StdError = auto --StartMode = Java - StopMode = Java --Jvm = auto ++ JvmOptions = -Djetty.home = D:\ Jetty-7.6 ++ JvmOptions = -DSTOP.PORT = 8087 ++ JvmOptions = -DSTOP.KEY = downB0y ++ JvmOptions = -Djetty。 logs = D:\ Jetty-7.6 \ logs ++ JvmOptions = -Dorg.eclipse.jetty.util.log.SOURCE = true ++ JvmOptions = -XX:MaxPermSize = 128M ++ JvmOptions = -XX:+ CMSClassUnloadingEnabled ++ JvmOptions = -XX:+ CMSPermGenSweepingEnabled --Classpath = D:\ Jetty-7.6 \ start.jar --StartClass = org.eclipse.jetty.start.Main ++ StartParams = OPTIONS = All ++ StartParams = D:\ Jetty-7.6 \ etc \ jetty.xml ++ StartParams = D:\ Jetty-7.6 \ etc \ jetty-deploy.xml ++ StartParams = D:\ Jetty-7.6 \ etc \ jetty-webapps.xml ++ StartParams = D:\ Jetty -7.6 \ etc \ jetty-contexts.xml ++ StartParams = D:\ Jetty-7.6 \ etc \ jetty-testrealm.xml --StopClass = org.eclipse.jetty.start.Main ++ StopParams = - stop

但启动jetty服务器时出现此错误:

  

2013-06-03 14:58:17 Commons Daemon procrun stderr初始化   java.lang.NoClassDefFoundError:org / eclipse / jetty / start / Main

     

引起:java.lang.ClassNotFoundException:   org.eclipse.jetty.start.Main

     

at java.net.URLClassLoader $ 1.run(URLClassLoader.java:202)

     

at java.security.AccessController.doPrivileged(Native Method)

     

在java.net.URLClassLoader.findClass(URLClassLoader.java:190)

     

at java.lang.ClassLoader.loadClass(ClassLoader.java:306)

     

at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)

     

在java.lang.ClassLoader.loadClass(ClassLoader.java:247)

     

无法找到主类:org.eclipse.jetty.start.Main。程序   将退出。

     

线程“main”中的异常

我使用的是Windows 7,32位和Jetty 7.6。有人可以帮帮我。

2 个答案:

答案 0 :(得分:1)

似乎问题出在commons守护进程二进制文件提供的prunsrv.exe中。然后我使用64位Windows系统上提供的64位.exe工作得很好。但为什么id在32位窗口上不起作用仍然是一个谜。

答案 1 :(得分:0)

看起来你有一个类路径问题,运行java执行的服务不知道start.jar文件。我会研究该服务决策中可用的任何选项,并找出如何添加类似

的内容
-cp d:\Jetty-7.6\start.jar

所以它在你的类路径上,从Jetty start.jar进程的那个点开始应该创建一个合理的类路径。