2013-03-04 11 views
5

मैं एक जावा जीयूआई एप्लिकेशन को प्राप्त करने के लिए डीबग (ईक्लीप्स पर एफ 11) डीबग करने की कोशिश कर रहा हूं, लेकिन जब एक्लिप्स आईडीई के बाहर एप्लिकेशन ठीक है (कम से कम एक छोटा फिक्स मुझे लागू करने की आवश्यकता है), तो यह उत्पादन करता है जब ग्रहण से शुरू की निम्न अपवाद (या तो F11 या Ctrl + F11):ClassNotFoundException: org.dom4j.DocumentException

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/dom4j/DocumentException 
    at com.example.myapp.LoginWindow.buildHibernateConfig(LoginWindow.java:178) 
    at com.example.myapp.LoginWindow.actionPerformed(LoginWindow.java:141) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 
    at javax.swing.AbstractButton.doClick(AbstractButton.java:357) 
    at javax.swing.plaf.basic.BasicRootPaneUI$Actions.actionPerformed(BasicRootPaneUI.java:191) 
    at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1639) 
    at javax.swing.JComponent.processKeyBinding(JComponent.java:2859) 
    at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:267) 
    at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:216) 
    at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2936) 
    at javax.swing.JComponent.processKeyBindings(JComponent.java:2928) 
    at javax.swing.JComponent.processKeyEvent(JComponent.java:2822) 
    at java.awt.Component.processEvent(Component.java:6074) 
    at java.awt.Container.processEvent(Container.java:2039) 
    at java.awt.Component.dispatchEventImpl(Component.java:4660) 
    at java.awt.Container.dispatchEventImpl(Container.java:2097) 
    at java.awt.Component.dispatchEvent(Component.java:4488) 
    at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1856) 
    at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:722) 
    at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1000) 
    at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:865) 
    at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:686) 
    at java.awt.Component.dispatchEventImpl(Component.java:4532) 
    at java.awt.Container.dispatchEventImpl(Container.java:2097) 
    at java.awt.Window.dispatchEventImpl(Window.java:2489) 
    at java.awt.Component.dispatchEvent(Component.java:4488) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:668) 
    at java.awt.EventQueue.access$400(EventQueue.java:81) 
    at java.awt.EventQueue$2.run(EventQueue.java:627) 
    at java.awt.EventQueue$2.run(EventQueue.java:625) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) 
    at java.awt.EventQueue$3.run(EventQueue.java:641) 
    at java.awt.EventQueue$3.run(EventQueue.java:639) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:638) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 
Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    ... 47 more 

इस पर मेरे प्रारंभिक खोज में पाया गया कि the dom4j library may be missing लेकिन pom.xml में जोड़ने:

<dependency> 
     <groupId>net.sourceforge.saxon</groupId> 
     <artifactId>saxon</artifactId> 
     <version>9.1.0.8</version> 
    </dependency>   
    <dependency> 
     <groupId>dom4j</groupId> 
     <artifactId>dom4j</artifactId> 
     <version>1.6.1</version> 
    </dependency> 
    </dependencies> 

किया नहीं टी हल करें वह समस्या है।

कोई विचार क्यों मुझे यह अपवाद मिल रहा है (केवल ग्रहण से लॉन्च करते समय) और इस समस्या को हल करने के लिए कैसे?

बीटीडब्ल्यू, saxson निर्भरता केवल इसलिए जोड़ा गया क्योंकि the latest dom4j का उपयोग करने की कोशिश करने के परिणामस्वरूप अनसुलझे निर्भरताएं हुईं। लेकिन चूंकि मैं dom4j 1.6.1 में डाउनग्रेड कर रहा सैक्सन निर्भरता को समाप्त कर सकता है ताकि pom.xml फ़ाइल केवल अब शामिल हैं:

<dependency> 
     <groupId>dom4j</groupId> 
     <artifactId>dom4j</artifactId> 
     <version>1.6.1</version> 
    </dependency> 
    </dependencies> 
+1

क्या यह एक मैवेन एम 2 प्रोजेक्ट या ग्रहण में एक सरल जावा परियोजना है? – anoopelias

+0

@anoopelias हां, यह * एक मैवेन एम 2 प्रोजेक्ट है। इसमें निर्भरता डाउनलोड करने और इसके साथ निर्माण करने में ** ** ** समस्याएं हैं। अजीब। – Withheld

+0

यदि आपके पास कई अन्य निर्भरताएं हैं तो आप ग्रहण में निर्यात आदेश को बदलने का प्रयास कर सकते हैं। Dom4j को सूची में ले जाएं ताकि आपके पास कोई अन्य निर्भरता न हो जिसमें Dom4j का पुराना संस्करण शामिल हो। – jontejj

उत्तर

1

मैं ग्रहण "डिबग" दृश्य पर जाकर वास्तविक आदेश है कि ग्रहण को चलाने के लिए उपयोग कर रहा है मिलेगा आपका कार्यक्रम आपको प्रोग्राम शुरू होने के तुरंत बाद निलंबित करना चाहिए, फिर "डीबग" दृश्य में दूसरी पंक्ति पर राइट क्लिक करें, फिर गुण चुनें। आपको "प्रक्रिया गुण" नामक एक विंडो दिखाई देगी, जिससे आपके प्रोग्राम को चलाने के लिए ग्रहण द्वारा उत्पन्न आदेश की प्रतिलिपि बनाई जा सकती है। आप कमांड को टर्मिनल में पेस्ट कर सकते हैं और फिर देखें कि जावा क्लासपाथ को कैसे हल करता है। देखें कि कौन सा जार वास्तव में -verbose पैरामीटर जोड़कर लोड किया जाता है।

संपादित करें - बस इसे स्पष्ट करना, जब मैं कहता हूँ "डिबग दृश्य" मेरा मतलब है

"Main Menu"->"Window"->"Show View"->"Debug" 
2

भाई, आप अपने program.These चलाने के लिए सभी जार फ़ाइलें आयात करने की जरूरत है अपनी परियोजना

चलाने के लिए अनिवार्य हैं

पोई-3.10-Final.jar

पोई-OOXML- 3.10-Final.jar

पोई-OOXML- स्कीमा-3.10.jar

Xmlbeans-2.30.jar

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