2013-03-04 5 views
5

Я пытаюсь отлаживать (F11 на Eclipse) приложение GUI для Java, которое я унаследовал, но пока приложение работает нормально (минус небольшое исправление, которое мне нужно применить) вне Eclipse IDE, оно производит следующее исключение при запуске из Затмения (или 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> 

Did не решить t он проблема.

Любая идея, почему я получаю это исключение (только при запуске с Eclipse) и как решить эту проблему?

BTW, зависимость 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

Это проект Maven m2e или простой проект java в eclipse? – anoopelias

+0

@anoopelias Да, это * проект Maven m2e. У него нет ** проблем с загрузкой зависимости и построением с ней. Weird. – Withheld

+0

Если у вас есть несколько других зависимостей, вы можете попробовать изменить экспортный порядок в eclipse. Переместите dom4j вверх по списку, чтобы у вас не было другой зависимости, которая включает более старую версию Dom4j. – jontejj

ответ

1

Я бы к Затмения «отладки» зрения и получить реальную команду, Затмение используется для запуска вашей программы. Вы должны приостановить программу, как только она начнется, затем щелкните правой кнопкой мыши по второй строке в представлении «отладка», затем выберите свойства. Вы увидите окно под названием «свойства процесса», из которого можно скопировать команду, созданную Eclipse, для запуска вашей программы. Вы можете вставить команду в терминал, а затем посмотреть, как Java разрешает путь к классам. Посмотрите, какие банки загружены, добавив параметр -verbose.

EDIT - Просто чтобы было ясно, когда я говорю «вид отладки» Я имею в виду

"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

 Смежные вопросы

  • Нет связанных вопросов^_^