2011-10-06 15 views
15

मैंने jsf फ़ाइल में jsp फ़ाइल में पंजीकरण फ़ॉर्म बनाया है और मैं इसे तत्वों से गुजरने के लिए इसे वेब सेवा से कनेक्ट करने का प्रयास करता हूं एक डेटाबेसjava.lang.NoClassDefFoundError: org/apache/commons/search/tools/DiscoverSingleton

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

क्या कोई मुझे कुछ बता सकता है जो शायद मुझे किसी तरह से मदद कर सकता है?

त्रुटि:

javax.servlet.ServletException: #{formabean.submitdetails}: java.lang.NoClassDefFoundError: org/apache/commons/discovery/tools/DiscoverSingleton 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:256) 
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) 

मेरी प्रपत्र jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%> 

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%> 
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 

<f:view> 
    <html> 
     <head> 
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
      <title>Form</title> 
     </head> 
     <body> 
      <div align="right" > 
       <p> 
        <br>............. 
<h:commandButton value="submit" type="submit" 
           action="#{formabean.submitdetails}" /> 


      </h:form> 

     </body> 
    </html> 
</f:view> 

मेरी बीन वर्ग "formavar":

package org.forma; 

import org.imigrant.Migration.MigrationResult; 
import org.imigrant.Migration.MigrationWS_PortType; 
import org.imigrant.Migration.MigrationWS_Service; 
import org.imigrant.Migration.MigrationWS_ServiceLocator; 

/** libraries for Web Service*/ 
/** 
* 
* @author USER 
*/ 
public class formavar { 

    private String name; 
    private String lastname;..... 
public String getName() { 
     return name; 
    } 

    /** 
    * @param name the name to set 
    */ 
    public void setName(String name) { 
     this.name = name; 
    } 

    /** 
    * @return the surname 
    */ 
    public String getLastname() { 
     return lastname; 
    } 

    /** 
    * @param surname the surname to set 
    */ 
    public void setLastname(String lastname) { 
     this.lastname = lastname; 
    }...... 
public String submitdetails() { 
     String migrationURL = "http://localhost:8080/mule-tomcat/ESB/Migration?wsdl"; 
     MigrationResult registrationResult = new MigrationResult(); 

     try { 

      MigrationWS_Service service = new MigrationWS_ServiceLocator(migrationURL); 
      MigrationWS_PortType port = service.getMigrationImplPort(); 

      registrationResult = port.registerDoc(
       null, 
       this.granting, 
       this.expire_date, 
     this.name, 
     this.lastname,............. 

        ); 


      return "OK"; 

     } catch (Exception ex) { 


      return "ERROR "+ex.getMessage(); 
     } 


     //return "OK"; 
    } 
} 

और config xml:

<managed-bean> 
     <managed-bean-name>formabean</managed-bean-name> 
     <managed-bean-class>org.forma.formavar</managed-bean-class> 
     <managed-bean-scope>request</managed-bean-scope> 
    </managed-bean> 
+1

BalusC जवाब सही है। ध्यान दें कि आपको एक तैनाती के बाद त्रुटि मिल रही है और संकलन के दौरान नहीं। मेरे लिए, यह इंगित करता है कि आपके पास अपाचे कॉमन्स डिस्कवरी जार है, लेकिन यह आपके एप्लिकेशन के साथ इसे तैनात नहीं कर रहा है। यदि आप एक युद्ध फ़ाइल बना रहे हैं, तो आप इसे अपने रनटाइम क्लासपाथ में/WEB-INF/lib निर्देशिका (युद्ध में) में रखकर खोज जार डाल सकते हैं। \t कॉमन्स की खोज \t \t 0,5 \t \t परीक्षण \t \t कॉमन्स की खोज DwB

उत्तर

17

java.lang.NoClassDefFoundError: org/apache/commons/discovery/tools/DiscoverSingleton

इसका मतलब यह है कि निर्दिष्ट कक्षा (या कक्षा वाला एक जेएआर फ़ाइल) वेबपैप के रनटाइम क्लासपाथ में गायब है।

पैकेज नाम संकेत के रूप में, कक्षा अपाचे कॉमन्स डिस्कवरी का हिस्सा है जो http://commons.apache.org/discovery पर डाउनलोड के लिए उपलब्ध है। यदि आप अपने वेबएप के /WEB-INF/lib में अपनी जेएआर फ़ाइल (ओं) को छोड़ दें (जो वेबपैप के रनटाइम क्लासपाथ द्वारा कवर किया गया है), तो यह त्रुटि गायब होनी चाहिए।

ध्यान दें कि इस समस्या में कुछ भी नहीं है जेएसएफ/जेएसपी के साथ करने के लिए, अकेले जावा ईई दें। यह सिर्फ मूल जावा है। अपवाद का मूल कारण यह भी संकेत देता है; यह java.lang पैकेज का है।

11

परीक्षण कक्षा निष्पादन के समय प्रोजेक्ट क्लासपाथ से निर्दिष्ट कक्षाएं गायब हैं।

समाधान अपने पोम के लिए निम्न निर्भरता को जोड़ने के लिए है:

<dependency> 
    <groupId>commons-discovery</groupId> 
    <artifactId>commons-discovery</artifactId> 
    <version>0.5</version> 
    <scope>test</scope> 
</dependency> 
+0

! धन्यवाद! – Fadid

+0

आप मेरी समस्या हल: अपने पोम में जोड़ने – hbobenicio

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