2012-02-19 7 views
5

मैं एक वेबपैप लॉन्च करने के लिए एम्बेडेड जेटी का उपयोग कर रहा हूं और मैं जेएसपी पृष्ठों को विचारों के रूप में उपयोग करता हूं।जेएसपी का उपयोग करके एम्बेडेड जेटी का उपयोग करने से त्रुटि मिलती है "web-jsptaglibrary_1_2.dtd नहीं मिला"

मेवेन-जेटी-प्लगइन का उपयोग परीक्षण के लिए ठीक काम करता है, जो मुझे लगता है कि सर्वर को बूटस्ट्रैप करते समय मुझे कुछ निर्भरताएं याद आ रही हैं (और जो समस्या का मूल कारण है)।

java $JAVA_OPTS -cp target/classes:target/dependency/* xxx.Main 

मैं Maven में निर्भरता प्लगइन का इस्तेमाल किया है (पैक युद्ध फ़ाइल के बाहर) classpath पर सभी deps प्राप्त करने के लिए सुनिश्चित करने के लिए:

<execution> 
<id>copy-dep</id> 
<goals> 
<goal>copy-dependencies</goal> 
</goals> 
</execution> 

मैं कमांड के साथ घाट bootstrap

मुख्य वर्ग इस तरह दिखता है:

 Server server = new Server(8080); 
    WebAppContext root = new WebAppContext(); 
    root.setContextPath("/"); 
    root.setWar("target/app.war"); 
    server.setHandler(root); 
    server.start(); 
    server.join(); 

एम्बेडेड जेट्टी सर्वर त्रुटियों के बिना शुरू होता है, बू टी जेएसपी पेज लौटने वाले यूआरएल पर नेविगेट करते समय मुझे हमेशा यह त्रुटि मिलती है।

स्टैकट्रेस: ​​

PWC6181: File /javax/servlet/jsp/resources/web-jsptaglibrary_1_2.dtd not found 

Caused by: 

org.xml.sax.SAXException: PWC6181: File /javax/servlet/jsp/resources/web-jsptaglibrary_1_2.dtd not found 
at org.apache.jasper.xmlparser.MyEntityResolver.resolveEntity(ParserUtils.java:566) 
at com.sun.org.apache.xerces.internal.util.EntityResolverWrapper.resolveEntity(EntityResolverWrapper.java:107) 
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.resolveEntityAsPerStax(XMLEntityManager.java:1018) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1192) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1090) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1003) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) 
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) 
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808) 
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) 
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) 
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235) 
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284) 
at org.apache.jasper.xmlparser.ParserUtils.parseXMLDocument(ParserUtils.java:296) 
at org.apache.jasper.xmlparser.ParserUtils.parseXMLDocument(ParserUtils.java:366) 
at org.apache.jasper.runtime.TldScanner.scanTld(TldScanner.java:526) 
at org.apache.jasper.runtime.TldScanner.scanJar(TldScanner.java:379) 
at org.apache.jasper.runtime.TldScanner.scanJars(TldScanner.java:607) 
at org.apache.jasper.runtime.TldScanner.scanTlds(TldScanner.java:282) 
at org.apache.jasper.runtime.TldScanner.getLocation(TldScanner.java:255) 

मैं जेट्टी 8 का उपयोग करें और मेरे web.xml सर्वलेट 3.0 के लिए कॉन्फ़िगर किया गया है।

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 

उत्तर

6

मुझे पता चला कि गायब डीटी फाइल के साथ समस्या यह थी कि मुझे जेटी जेएसपी जेएआर की आवश्यकता थी।

मैं JSP-समर्थन के लिए इन निर्भरता का उपयोग कर जब यह काम नहीं किया था:

<dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.web</groupId> 
     <artifactId>jsp-impl</artifactId> 
     <version>2.2</version> 
    </dependency> 

जेट्टी-धावक हमेशा मेरे लिए काम किया तो मुझे लगा कि जार फ़ाइल में निर्भरता को देखा।

<dependency> 
    <groupId>org.eclipse.jetty.orbit</groupId> 
    <artifactId>javax.servlet.jsp</artifactId> 
    <version>2.2.0.v201112011158</version> 
</dependency> 
<dependency> 
    <groupId>org.eclipse.jetty.orbit</groupId> 
    <artifactId>org.apache.jasper.glassfish</artifactId> 
    <version>2.2.2.v201112011158</version> 
</dependency> 

निर्भरता लापता DTD-फ़ाइलें javax.servlet.jsp में मौजूद हैं, तो समस्या दूर चला गया जब मैं उन्हें का उपयोग शुरू किया।

तो मुझे लगता है कि समस्या यह थी कि मुझे जेटी विशिष्ट जेएसपी निर्भरताओं की आवश्यकता थी, न कि सामान्य। क्या कोई बता सकता है कि जेटी को इस तरह क्यों लागू किया गया है?

संबंधित मुद्दे

 संबंधित मुद्दे