我已将Grails Standalone插件添加到我的应用程序中,以创建我希望使用Java Webstart启动的轻量级独立版本的应用程序。单独使用插件并从命令行运行应用程序似乎工作,但如果我尝试使用webstart,我会收到以下错误:
信息:找不到全局web.xml 2014年12月15日下午2:13:42 org.apache.tomcat.util.digester.Digester startElement 严重:Begin事件抛出异常java.lang.ClassNotFoundException: org.apache.catalina.deploy.FilterDef at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547) 在 org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:144) 在 org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1276) 在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1363) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) 在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) 在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) 在 com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) 在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) 在 com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl $ JAXPSAXParser.parse(SAXParserImpl.java:648) 在org.apache.tomcat.util.digester.Digester.parse(Digester.java:1537) 在 org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1899) 在 org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1252) 在 org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) 在 org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) 在 org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 在 org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1559) 在 org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1549) 在java.util.concurrent.FutureTask.run(FutureTask.java:262)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:745)
2014年12月15日下午2:13:42 org.apache.catalina.startup.ContextConfig parseWebXml SEVERE:解压缩应用程序web.xml文件中的错误 jndi:/localhost/hl/WEB-INF/web.xml org.xml.sax.SAXParseException; systemId:jndi:/localhost/hl/WEB-INF/web.xml; lineNumber:15; columnNumber:10;错误在(15,10): org.apache.catalina.deploy.FilterDef at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2687) 在 org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2719) 在 org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1279) 在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1363) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) 在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) 在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) 在 com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) 在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) 在 com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl $ JAXPSAXParser.parse(SAXParserImpl.java:648) 在org.apache.tomcat.util.digester.Digester.parse(Digester.java:1537) 在 org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1899) 在 org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1252) 在 org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) 在 org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) 在 org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 在 org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1559) 在 org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1549) 在java.util.concurrent.FutureTask.run(FutureTask.java:262)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:745)引起: java.lang.ClassNotFoundException:org.apache.catalina.deploy.FilterDef 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547) 在 org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:144) 在 org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1276) ......还有25个
2014年12月15日下午2:13:42 org.apache.catalina.startup.ContextConfig parseWebXml严重:发生在第15行第10栏2014年12月15日2:13:42 PM org.apache.catalina.startup.ContextConfig configureStart SEVERE: 由于之前的错误12月15日标记此应用程序不可用, 2014 2:13:43 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD跳过了。 URI:http://www.springframework.org/tags已经存在 定义2014年12月15日下午2:13:43 org.apache.catalina.core.StandardContext startInternal SEVERE:错误 getConfigured 2014年12月15日下午2:13:43 org.apache.catalina.core.StandardContext startInternal SEVERE:Context [/ hl]由于之前的错误导致启动失败严重:上下文[/ hl] 在[org.apache.catalina.core.StandardContext]生命周期中失败。 允许Tomcat关闭。 2014年12月15日下午2:13:43 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc 警告:Web应用程序的JDBC驱动程序取消注册失败[/ hl] java.lang.NullPointerException at org.apache.catalina.loader.WebappClassLoader.clearReferencesJdbc(WebappClassLoader.java:2042) 在 org.apache.catalina.loader.WebappClassLoader.clearReferences(WebappClassLoader.java:1978) 在 org.apache.catalina.loader.WebappClassLoader.stop(WebappClassLoader.java:1890) 在 org.apache.catalina.loader.WebappLoader.stopInternal(WebappLoader.java:662) 在 org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 在 org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5669) 在 org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160) 在 org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1559) 在 org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1549) 在java.util.concurrent.FutureTask.run(FutureTask.java:262)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:745)
2014年12月15日下午2:13:43 org.apache.coyote.AbstractProtocol start INFO: 启动ProtocolHandler [" http-bio-8080"]服务器正在运行。浏览到 http://myurl.com:8080/hl
我的猜测是,Webstart启动程序处理Tomcat的方式与提取的战争相对于包含Tomcat二进制文件的jar文件的路径不同,但我很难解决这个问题。 / p>
答案 0 :(得分:0)
好吧,我对我的部署解决方案非常热衷于忘记一个关键事实:Grails需要JDK,Java Webstart提供JRE,而不是JDK JVM。我认为,无论我做什么,使用Java Webstart都行不通。
经验教训 - 从配置文件和版本冲突的细节中退一步,当你有一些你似乎无法通过的东西时,看看你的整体设计。
我不应该发现导致此问题的2个问题,1是webapps / META-INF /中存在context.xml文件,当删除时会导致此问题消失: http://grails.1312388.n4.nabble.com/Upgrade-to-tomcat-7-0-47-fails-with-web-xml-issue-td4652196.html
另一个是BuildConfig.groovy中缺少grails.project.fork配置
https://jira.grails.org/browse/GRAILS-10832
这两个问题都发现在与我使用的版本接近的版本中,使用了我使用的完全相同的Tomcat版本。