java - 使用 Java Webstart 的 Grails 独立应用程序失败并出现 ClassNotFoundException : FilterDef

标签 java tomcat grails plugins java-web-start

我已将 Grails Standalone 插件添加到我的应用程序中,以创建我希望使用 Java Webstart 启动的我的应用程序的轻型独立版本。单独使用插件并从命令行运行应用程序似乎可行,但如果我尝试使用 webstart,我会收到以下错误:

INFO: No global web.xml found Dec 15, 2014 2:13:42 PM org.apache.tomcat.util.digester.Digester startElement SEVERE: Begin event threw exception java.lang.ClassNotFoundException: org.apache.catalina.deploy.FilterDef at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547) at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:144) at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1276) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1363) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:648) at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1537) at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1899) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1252) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)

Dec 15, 2014 2:13:42 PM org.apache.catalina.startup.ContextConfig parseWebXml SEVERE: Parse error in application web.xml file at jndi:/localhost/hl/WEB-INF/web.xml org.xml.sax.SAXParseException; systemId: jndi:/localhost/hl/WEB-INF/web.xml; lineNumber: 15; columnNumber: 10; Error at (15, 10) : org.apache.catalina.deploy.FilterDef at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2687) at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2719) at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1279) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1363) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:648) at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1537) at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1899) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1252) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ClassNotFoundException: org.apache.catalina.deploy.FilterDef at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547) at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:144) at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1276) ... 25 more

Dec 15, 2014 2:13:42 PM org.apache.catalina.startup.ContextConfig parseWebXml SEVERE: Occurred at line 15 column 10 Dec 15, 2014 2:13:42 PM org.apache.catalina.startup.ContextConfig configureStart SEVERE: Marking this application unavailable due to previous error(s) Dec 15, 2014 2:13:43 PM org.apache.catalina.startup.TaglibUriRule body INFO: TLD skipped. URI: http://www.springframework.org/tags is already defined Dec 15, 2014 2:13:43 PM org.apache.catalina.core.StandardContext startInternal SEVERE: Error getConfigured Dec 15, 2014 2:13:43 PM org.apache.catalina.core.StandardContext startInternal SEVERE: Context [/hl] startup failed due to previous errors SEVERE: Context [/hl] failed in [org.apache.catalina.core.StandardContext] lifecycle. Allowing Tomcat to shutdown. Dec 15, 2014 2:13:43 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc WARNING: JDBC driver de-registration failed for web application [/hl] java.lang.NullPointerException at org.apache.catalina.loader.WebappClassLoader.clearReferencesJdbc(WebappClassLoader.java:2042) at org.apache.catalina.loader.WebappClassLoader.clearReferences(WebappClassLoader.java:1978) at org.apache.catalina.loader.WebappClassLoader.stop(WebappClassLoader.java:1890) at org.apache.catalina.loader.WebappLoader.stopInternal(WebappLoader.java:662) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5669) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)

Dec 15, 2014 2:13:43 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-8080"] Server running. Browse to http://myurl.com:8080/hl

我的猜测是 Webstart 启动器处理 Tomcat 的方式在提取的 war 路径与包含 Tomcat 二进制文件的 jar 文件方面有所不同,但我很难解决这个问题。

最佳答案

好吧,我对我的部署解决方案太着急了,我忘记了一个关键事实: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 版本。

关于java - 使用 Java Webstart 的 Grails 独立应用程序失败并出现 ClassNotFoundException : FilterDef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27494208/

相关文章:

java - 在运行时在 Java 导出的 WAR 中创建配置文件

java - 如何通过浏览器限制对 Servlet 的访问

grails - 提供者 org.springframework.cloud.cloudfoundry.CloudFoundryConnector 无法实例化

grails - 如何正确处理具有两次相同参数和相同值的 URL?

java - 如何将我的 Java 代码集成到具有标准 HTML、CSS、Javascript 的 Web 应用程序中?

java - 我如何找到哪个类正在打印错误?

java - JDBC 无法加载数据源的工厂类

java - tomcat重启后基于spring security java的配置

java - 从 JSF 中的表单中排除字段

grails - 如何在两个类(class)之间建立适当的关系