Почему среда IDE NetBeans не видит созданные источники? - PullRequest
19 голосов
/ 24 марта 2012

У меня есть веб-приложение, созданное Maven, которое использует JPA 2.0 на заднем плане. Поставщиком JPA является EclipseLink 2.3.2.

Когда я собираю проект (и он успешно разворачивается), он строит метамодель JPA в каталоге

${basedir}/target/generated-sources/annotations/

Однако IDE не видит определенные там классы. Маленькие красные точки с восклицательным знаком повсюду. Тем не менее, я могу перейти к этим файлам в окне Projects и открыть сгенерированные исходные файлы.

Это случается с кем-то еще, и кто-нибудь знает, как это исправить?

UPDATE:

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

Ответы [ 4 ]

6 голосов
/ 15 июля 2016

Если вы перейдете к свойствам / источникам проекта, есть примечание об этом: вам нужно сгенерировать источники в

${basedir}/target/generated-sources/FOOBAR 

где FOOBAR - имя вашего плагина.

enter image description here

3 голосов
/ 10 апреля 2017

После прочтения ответа @jeqo я проверил, изменило ли вручную переименование:

 "${project.build.directory}/generated-sources/annotations" to ".../generated-sources/hibernate-jpamodelgen" 

на Nebeans (я использую v8.2 в Ubuntu 16.04).

Все работало как шарм.

Затем я изменил файл pom следующим образом:

1) удалил зависимость "org.hibernate: hibernate.jpamodelgen".

2) настроил плагин maven-compiler-plugin следующим образом:

   <plugin>
    <groupId>>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.6.1</version>
    <configuration>
      <compilerArgument>-proc:none</compilerArgument>        
    </configuration>
  </plugin>
  • Эти два шага - убедиться, что hibernate-jpamodelgen не запускается при автопилоте, просто добавив его в зависимость проектасписок.Пожалуйста, обратитесь к документу JPA Static MetaModel Generator doc.

3) добавил следующий плагин с конфигурацией

  <plugin>
    <groupId>org.bsc.maven</groupId>
    <artifactId>maven-processor-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
      <execution>
        <id>process</id>
        <goals>
          <goal>process</goal>
        </goals>
        <phase>generate-sources</phase>
        <configuration>
          <processors>
            <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
          </processors>
          <defaultOutputDirectory>${project.build.directory}/generated-sources/hibernate-jpamodelgen/</defaultOutputDirectory>
        </configuration>
      </execution>
    </executions>
    <dependencies>
      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-jpamodelgen</artifactId>
        <version>5.2.9.Final</version>
      </dependency>
    </dependencies>
  </plugin>

Эта конфигурация напрямую из Hibernate JPA StaticСтраница документации Metamodel Generator, за исключением следующей строки:

<defaultOutputDirectory>${project.build.directory}/generated-sources/hibernate-jpamodelgen/</defaultOutputDirectory>

Эта строка просто генерирует метамодель в каталоге, названном в честь имени подключаемого модуля maven.С этого момента я получил все ссылки Netbeans, работающие во время разработки, как если бы сгенерированные классы находились в поддереве каталога src.

Надеюсь, это поможет,

J

2 голосов
/ 27 июня 2013

Иногда у Netbeans возникают проблемы с обновлением. Возможно очистить и перестроить проект и перезапустить Netbeans?

0 голосов
/ 30 января 2018

Если вы используете jaxws, убедитесь, что вы добавили узел <sourceDestDir> в секцию <configuration> плагина jaxws «артефакт» в соответствующем поле.Например:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxws-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>dojaxws</goal>
                    </goals>
                    <configuration>
                        <sourceDestDir>${project.build.directory}/generated-sources/jaxws</sourceDestDir>
                        ....
                    </configuration>
                </execution>
            </executions>
            <configuration>
                <wsdlDirectory>src/main/resources/com/mystuff/ws</wsdlDirectory>
                <bindingDirectory>src/jaxws/binding</bindingDirectory>
                <target>2.0</target>
            </configuration>
        </plugin>

Как объяснено выше и как отмечено в netbeans, вы должны использовать путь generate-sources, добавленный с именем «plug-in».Надеемся, что вышеизложенное проясняет, что означает «имя плагина» и как именно нужно получить jaxws для размещения сгенерированных источников там, где они нужны для сетевых компонентов.Очевидно, что раздел «конфигурация» будет отличаться для каждого плагина ... Узел <sourceDestDir> необходим для jaxws, другие плагины могут использовать что-то еще.

...