2012-03-23 3 views
18

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

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

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

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

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

UPDATE:

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

+0

В eclipse вы можете определить более чем одну исходную папку - попробуйте добавить ее. –

+3

Да, это ошибка, Netbeans должен обновляться автоматически. – eskatos

+0

это еще [ошибка] (https://netbeans.org/bugzilla/show_bug.cgi?id=218658) в 2015 году с Netbeans 8.0.2. Интересно, почему все используют Eclipse или Intellij. –

ответ

2

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

+1

Я пробовал это и все тот же, я даже попробовал «mvn clean install -Dmaven.test.skip = true» в директории pom моего proyect и ничего. –

4

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

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

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

enter image description here

+0

Я вижу свои сгенерированные источники и все мои файлы с номенклатурой «Example_», но только на вкладке «Файлы» Netbeans, но они все еще не распознаются моей идеей для импорта или использования в моих java-файлах и обнаруживаются как игнорируется на моей вкладке proyect. Помощь Pls. –

3

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

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

бы сделать разницу в Nebeans (я использую v8.2 на убунту 16,04).

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

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

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

2) настроил Maven-компилятор-плагин следующим образом:

<plugin> 
    <groupId>>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.6.1</version> 
    <configuration> 
     <compilerArgument>-proc:none</compilerArgument>   
    </configuration> 
    </plugin> 
  • Эти два шага, чтобы убедиться, что спящий режим-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 Статический Metamodel генератор для следующей строки за исключением:

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

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

Надеется, что это помогает,

J

0

Если вы используете 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, вы должны использовать путь порождающие-источники прилагаемую с именем «плагин». Надеюсь, что вышеописанное разъясняет, что означает «имя подключаемого модуля», и как именно один должен получить jaxws для размещения генерируемых источников, в которых они нуждаются. Ясно, что раздел «Конфигурация» будет отличаться для каждого плагина ... Узел <sourceDestDir> необходим для jaxws, другие плагины могут использовать что-то еще.

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