Компилятор запускает класс вне пути сборки вместо класса внутри пути сборки

#java #eclipse #buildpath

#java #eclipse #buildpath

Вопрос:

Я разрабатываю Java-приложение, которое использует ряд параллельных проектов. В одном из проектов у меня есть класс, который является реализацией интерфейса. Проблема, с которой я сталкиваюсь, заключается в том, что этот класс, похоже, представлен двумя способами: как класс в пути сборки, так и как класс вне пути сборки.

В Eclipse я могу открыть класс как вкладку с обоими «версиями пути», одна с «заполненным J», а другая с «пустым J». Для меня это не проблема, меня это не волнует, дело в том, что компилятор, похоже, всегда запускает класс как версию «не являющуюся частью пути сборки». Когда я отлаживаю, отладчик всегда оказывается в классе вне пути сборки. Это вызывает ошибки и сбой приложения.

Я понятия не имею, как я должен это решить. В моем понимании это даже не должно быть проблемой, компилятор всегда должен запускать классы внутри пути сборки, верно ..?

Кто-нибудь имеет представление о том, в чем может быть проблема?

Вот трассировка стека, хотя я не думаю, что от нее будет много пользы … =

 Caused by: java.lang.NullPointerException: null
    at com.smarttrust.m2m.core.services.inventory.InventoryServiceImpl.getNetworks(InventoryServiceImpl.java:244) ~[m2m-core-services-1.0.0-A-SNAPSHOT.jar:1.0.0-A-SNAPSHOT]
    at com.smarttrust.m2m.ui.admin.inventory.InventoryAssignSubscription.populateDropdown(InventoryAssignSubscription.java:211) ~[classes/:na]
    at com.smarttrust.m2m.ui.admin.inventory.InventoryAssignSubscription.init(InventoryAssignSubscription.java:115) ~[classes/:na]
    at com.smarttrust.m2m.ui.admin.inventory.InventorySimCardTable$ActionColumnGenerator$1.buttonClick(InventorySimCardTable.java:352) ~[classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_26]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_26]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_26]
    at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_26]
    at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:490) ~[vaadin-6.6.3.jar:6.6.3]
    ... 23 common frames omitted
  

Комментарии:

1. Такого рода проблема может возникнуть, если вы используете плагин Eclipse Maven (m2e / m2eclipse), а POM проекта зависит от версии проекта, которая содержит проблемный класс, который отличается от версии, имеющейся у вас в Eclipse

2. @NicolaMusatti Вы, вероятно, правы в этом… Моя проблема в том, что моей основной задачей в проекте является разработка графического интерфейса для приложения и очень многоуровневых интерфейсных частей. Когда дело доходит до подобных проблем, которые происходят в самой основе проекта, я в растерянности… Вероятно, мне придется подождать до следующей недели, чтобы попытаться связаться с кем-то еще из моей проектной группы, кто может мне с этим помочь .. = В любом случае, спасибо, Никола. =)

Ответ №1:

Перейдите к пути сборки проекта на Order and Export вкладке. вы видите все исходные коды, связанные с вашим проектом, вы должны переместить правильный класс (как вы говорите, тот, который находится в пути сборки)