दिलचस्प पोस्ट
मानक एंड्रॉइड मेनू आइकन, उदाहरण के लिए ताज़ा करें डेल्फी का उपयोग करके एचटीपी पोस्ट यूआरएल को कॉल करने का सबसे आसान तरीका क्या है? दो PHP ऑब्जेक्ट मर्ज करने का सबसे अच्छा तरीका क्या है? कैसे Android में टोस्ट की स्थिति को बदलने के लिए? जी में ggplot2 का उपयोग कर, मैं विभिन्न क्षेत्रों में एक ग्राफ के विभिन्न रंगों की पृष्ठभूमि कैसे बना सकता हूं? अंतिम निकास संहिता के साथ बश संकेत कैसे एक jdk संस्करण को .class फ़ाइल को संकलित करने के लिए प्रयोग किया जाता है एक एकल मैवे प्लगइन निष्पादन चलाएं? स्पष्टीकरण के बारे में getchar () और न्यूलाइन की आवश्यकता है आप SQL सर्वर लेनदेन लॉग को कैसे साफ़ करते हैं? जावास्क्रिप्ट: गतिशील रूप से नेस्टेड ऑब्जेक्ट्स को एक ऑरेंज द्वारा दिए गए ऑब्जेक्ट नामों का उपयोग करने के लिए कैसे करें HTML ईमेल डिज़ाइन के लिए कौन से दिशानिर्देश हैं? एचटीएमएल 5 दस्तावेज़ प्रकार परिभाषा कहां है? स्काला में टाइप सिस्टम ट्यूरिंग पूर्ण है। प्रमाण? उदाहरण? लाभ? एंड्रॉइड – android.view.InflateException: बाइनरी एक्सएमएल फ़ाइल लाइन # 8: कक्षा खंड बढ़ाना त्रुटि

कैसे मेवेन के माध्यम से JSF पुस्तकालयों को ठीक से स्थापित और कॉन्फ़िगर करें?

मैं टॉमकेट के लिए जेएसएफ आधारित एप्लिकेशन को स्थापित करने की कोशिश कर रहा हूं। जिस तरह से मेरा बिल्ड सिस्टम सेटअप है, वारा में इसमें कोई भी लाइब्रेरी नहीं है, क्योंकि यह सर्वर कुल 43 ऐप्स की सेवा कर रहा है इसके बजाय, पुस्तकालयों को एक साझा पुस्तकालय फ़ोल्डर में कॉपी किया जाता है और ऐप्स में साझा किया जाता है जब मैं तैनात करता हूं, तो मुझे यह त्रुटि मिलती है

SEVERE: Error deploying configuration descriptor SSOAdmin.xml java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/faces/webapp/FacesServlet at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1667) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:108) at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:58) at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:297) at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1078) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:261) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4611) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675) at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061) at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) at org.apache.catalina.core.StandardService.start(StandardService.java:525) at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) at org.apache.catalina.startup.Catalina.start(Catalina.java:595) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 

अब मेरे शोध में, मैं देख रहा हूं कि इसे जेएसएफ स्रोत कोड डाउनलोड करके इसे खुद संकलित करके हल किया जाना चाहिए। यह मेरे मामले में एक भयानक समाधान है इससे हमारी टीम पर कई समस्याओं का कारण होगा जिससे हमें विभिन्न विन्यासों के साथ संघर्ष करना पड़ सकता है। इस के लिए एक और तय है?

यहां मेरा pom.xml :

 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.nms.sso</groupId> <artifactId>SSOAdmin</artifactId> <version>09142011-BETA</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>asm</groupId> <artifactId>asm</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <scope>${myExeScope}</scope> </dependency> <!-- <dependency> --> <!-- <groupId>com.sun.faces</groupId> --> <!-- <artifactId>jsf-api</artifactId> --> <!-- <scope>${myExeScope}</scope> --> <!-- </dependency> --> <!-- <dependency> --> <!-- <groupId>com.sun.faces</groupId> --> <!-- <artifactId>jsf-impl</artifactId> --> <!-- <scope>${myExeScope}</scope> --> <!-- </dependency> --> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>6.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.faces</groupId> <artifactId>javax.faces-api</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>net.sf.jt400</groupId> <artifactId>jt400</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>nmsc</groupId> <artifactId>nmsc_api</artifactId> <version>09142011-BETA</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>org.icefaces</groupId> <artifactId>icefaces</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>org.icefaces</groupId> <artifactId>icefaces-ace</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>org.icefaces</groupId> <artifactId>icefaces-compat</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>org.jibx</groupId> <artifactId>jibx-extras</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>org.jibx</groupId> <artifactId>jibx-run</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <scope>${myExeScope}</scope> </dependency> <dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <scope>${myExeScope}</scope> </dependency> </dependencies> <parent> <groupId>nmsc</groupId> <artifactId>nmsc_lib</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath>../libs</relativePath> </parent> <build> <finalName>SSOAdmin</finalName> </build> <name>SSOAdmin Maven Webapp</name> </project> 

यहां एक हल हो गया है। मैं दूसरे के लिए नहीं मान सकता है कि जेएसएफ के लिए मेवेन वितरित करने के लिए केवल संकलन के लिए अच्छा है और तैनाती के लिए अच्छा नहीं है।

Solutions Collecting From Web of "कैसे मेवेन के माध्यम से JSF पुस्तकालयों को ठीक से स्थापित और कॉन्फ़िगर करें?"

जब आपको "अजीब" अपवाद का सामना करना पड़ रहा है, जो सुझाव दे रहा है कि कक्षाएं / विधियों / फाइल / घटकों / टैग अनुपस्थित हैं या अलग हैं, जबकि वे स्पष्ट रूप से वेब अनुप्रयोग में शामिल हैं जैसे कि नीचे वाले,

java.lang.ClassFormatError: अनुपस्थित कोड विशेषता जो क्लास फ़ाइल javax / faces / webapp / FacesServlet में मूल या सार नहीं है

java.util.MissingResourceException: javax.faces.LogStrings बंडल नहीं मिल सकता

com.sun.faces.vendor.WebContainerInjectionProvider com.sun.faces.spi.InjectionProvider को नहीं डाला जा सकता

com.sun.faces.config.ConfigurationException: कॉन्फ़िगरेशन विफल

टैग नामित इनपुट नाम से टैग http://xmlns.jcp.org/jsf/html में एक रिक्त हैंडलर-क्लास परिभाषित किया गया है।

java.lang.NullPointerException पर javax.faces.CurrentThreadToServletContext.getFallbackFactory

या जब आप "अजीब" रनटाइम व्यवहार का सामना कर रहे हैं जैसे कि टूटी हुई HTTP सत्रों ( jsessionid सभी जगहों पर लिंक यूआरएल में दिखाई देता है), और / या टूटी JSF दृश्य गुंजाइश (यह अनुरोध scoped के रूप में व्यवहार करता है), और / या टूटी हुई सीएसएस / जेएस / छवि संसाधन, तो मौका बड़ा है कि वेबएप की रनटाइम क्लासपाथ दूषित संस्करणों वाली JAR फ़ाइलों के साथ दूषित हो गई है

FacesServlet साथ आपके विशिष्ट मामले में, इसका मतलब है कि उल्लेखित वर्ग वाले जार फ़ाइल पहली बार वास्तव में एक "ब्लूप्रिंट" एपीआई जेआर फाइल है, कार्यान्वयन विक्रेताओं (जैसे मोजररा और मायफेस के लिए काम कर रहे डेवलपर्स) के लिए प्रत्याशित है। इसमें केवल क्लास और विधि हस्ताक्षर वाले क्लास फाइल्स शामिल हैं, बिना किसी कोड निकायों और संसाधन फ़ाइलों के। यही वास्तव में "अनुपस्थित कोड विशेषता" का मतलब है। यह विशुद्ध रूप से javadocs और संकलन के लिए intented है।

हमेशा प्रदान किए गए सर्वर-प्रदान किए गए लाइब्रेरी को चिह्नित करें

सभी निर्भरताएं -api में " जावा निर्दिष्टीकरण " को चिह्नित करती हैं और आर्टिफैक्ट आईडी में एपीआई प्रत्यय होने पर उन ब्लूप्रिंट एपीआई हैं। आपको रनटाइम क्लासपाथ में बिल्कुल नहीं होना चाहिए। आपको हमेशा उन्हें <scope>provided</scope> चिह्नित करना चाहिए यदि आपको वास्तव में इसे अपने पोम में रखना चाहिए। एक अच्छी तरह से ज्ञात उदाहरण जावा ईई (वेब) एपीआई है :

 <dependency> <groupId>javax</groupId> <artifactId>javaee-web-api</artifactId> <version><!-- 6.0 or 7.0 or newer --></version> <scope>provided</scope> </dependency> 

यदि provided की provided गुंजाइश अनुपस्थित है, तो यह जार Webapp /WEB-INF/lib में समाप्त हो जाएगा, जिसके कारण आपको अभी तक सामना करना पड़ रहा है। इस जार में FacesServlet का खाका वर्ग भी शामिल है।

आपके विशिष्ट मामले में, आपके पास एक अनावश्यक JSF API निर्भरता है:

 <dependency> <groupId>javax.faces</groupId> <artifactId>javax.faces-api</artifactId> </dependency> 

यह परेशानी का कारण है क्योंकि इसमें FacesServlet का खाका वर्ग शामिल है इसे निकालकर और उपरोक्त दिखाए गए अनुसार किसी provided जावा ईई (वेब) एपीआई पर भरोसा करना चाहिए।

जेडपी / सेलेट कंटेनर के रूप में बिलाव को पहले से ही जेएसपी, सर्लेट और ईएल (और 8 से भी वेबसॉकेट) बॉक्स से बाहर निकलता है। तो आपको कम से कम jsp-api , servlet-api और el-api रूप में चिह्नित करना चाहिए। टॉमकेट केवल बॉक्स से बाहर जेएसएफ (और जेएसटीएल ) प्रदान नहीं करता है तो आपको इसे वेबएप के माध्यम से इंस्टॉल करना होगा

पूर्ण रूप से विकसित जावा ईई सर्वर जैसे वाइल्डफाली, टॉमी, ग्लासफिश, पेरा, वेबस्प्रेयर, आदि पहले से ही संपूर्ण जावा ईई एपीआई बॉक्स से बाहर प्रदान करते हैं, जेएसएफ सहित। इसलिए आपको वेबपेज के माध्यम से JSF इंस्टॉल करने की आवश्यकता नहीं है। यह केवल संघर्षों का परिणाम होगा यदि सर्वर पहले से बॉक्स के बाहर एक अलग कार्यान्वयन और / या संस्करण प्रदान करता है। आपको केवल एक ही निर्भरता की जरूरत है javaee-web-api जैसा कि ऊपर दिखाया गया है।

टॉमकेट पर JSF इंस्टॉल करना

टॉमकेट में जेएसएफ को स्थापित करने का उचित तरीका हमारे जेएसएफ विकी में उल्लिखित है – जेएसएफ का इंस्टॉलेशन 2 जेएसएफ के कार्यान्वयन, मोजर्रा और माइफ़्स हैं । आप उनमें से एक को स्थापित करने के लिए चुनना चाहिए और इस प्रकार दोनों नहीं

धूमधाम पर मोज़ारा स्थापित करना:

 <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.faces</artifactId> <version><!-- Check https://javaserverfaces.github.io --></version> </dependency> 

आप org.glassfish:javax.faces देख सकते हैं org.glassfish:javax.faces वर्तमान नवीनतम रिलीज़ संस्करण के लिए org.glassfish:javax.faces रिपॉजिटरी (जो वर्तमान में 2.2.13 )। Mojarra खुद के स्थापना निर्देश देखें ।

टॉमकेट पर MyFaces इंस्टॉल करना:

 <dependency> <groupId>org.apache.myfaces.core</groupId> <artifactId>myfaces-api</artifactId> <version><!-- Check http://myfaces.apache.org --></version> </dependency> <dependency> <groupId>org.apache.myfaces.core</groupId> <artifactId>myfaces-impl</artifactId> <version><!-- Check http://myfaces.apache.org --></version> </dependency> 

आप org.apache.myfaces.core:myfaces-bundle वर्तमान नवीनतम रिलीज़ संस्करण (जो वर्तमान में 2.2.10 ) के लिए org.apache.myfaces.core:myfaces-bundle repository देख सकते हैं।

ध्यान दें कि टॉमकेट 6 को सर्विसलेट 2.5 कंटेनर के रूप में अधिकतम जेएसएफ़ 2.1 का समर्थन मिलता है। रास्ते से, जेएसटीएल को स्थापित करने के लिए मत भूलिए। हमारे JSF विकी भी देखें – JSF इंस्टॉल करना

यह भी देखें:

  • वास्तव में जावा ईई क्या है?
  • java.lang.NoClassDefFound त्रुटि: javax / servlet / jsp / jstl / core / कॉन्फ़िगरेशन
  • कैसे टॉमकेट पर सीडीआई स्थापित और उपयोग करें?
  • JSF प्रदान किए गए HTML आउटपुट के बजाय खाली / कच्चे एक्सएचटीएमएल / एक्सएमएल / ईएल स्रोत के साथ रिक्त / अनपर्स पृष्ठ देता है