2012-03-23 26 views
18

Tengo una aplicación web Maven-built que utiliza JPA 2.0 en la parte de atrás. El proveedor de JPA es EclipseLink 2.3.2.¿Por qué NetBeans IDE no ve las fuentes generadas?

Cuando construyo el proyecto (y que despliega ejecuta correctamente) que construye el meta-modelo de APP en el directorio

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

Sin embargo, el IDE no ver las clases definidas allí. Pequeños puntos rojos con un signo de exclamación en todas partes. Sin embargo, puedo navegar a esos archivos en la ventana Proyectos y abrir los archivos fuente generados.

¿Le sucede esto a alguien más y alguien sabe de alguna forma de solucionarlo?

ACTUALIZACIÓN:

Como solución alternativa He descubierto que puedo salir de NetBeans, elimine el directorio de caché de NetBeans, a continuación, reinicie. Esto obliga a NetBeans a reconstruir el caché y luego las clases vuelven a ser visibles. ¿Debo enviar un error al rastreador de errores de NetBeans? No puedo proponer un caso de prueba para que suceda, pero sí con bastante frecuencia.

+0

En eclipse puede definir más de una carpeta de origen; intente agregarla. –

+3

Sí, esto es un error, Netbeans debe actualizarse automáticamente. – eskatos

+0

esto sigue siendo un [error] (https://netbeans.org/bugzilla/show_bug.cgi?id=218658) en 2015 con Netbeans 8.0.2. Me pregunto por qué todos usan Eclipse o Intellij. –

Respuesta

2

A veces Netbeans tiene problemas para actualizarse. Tal vez limpiar y reconstruir el proyecto y reiniciar Netbeans?

+1

Intenté esto y sigue igual, incluso probé "mvn clean install -Dmaven.test.skip = true" en el directorio pom de mi proyecto y nada. –

4

Si vas a las propiedades del proyecto/fuentes hay una nota acerca de esto: que necesita para generar fuentes de bajo

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

donde FOOBAR es el nombre de su plugin.

enter image description here

+0

Veo mis fuentes generadas y todos mis archivos con la nomenclatura "Ejemplo_" pero solo en la pestaña de archivos de Netbeans, sin embargo, todavía no están siendo detectados por mi ide para ser importados o utilizados en mis archivos java, y se detectan como ignorado en mi pestaña de proyecto. Pls ayuda. –

3

Después de leer @jeqo respuesta, la prueba si, por el cambio de nombre de forma manual:

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

podría hacer una diferencia en Nebeans (estoy usando v8.2 en ubuntu 16.04).

Todo funcionó a las mil maravillas.

entonces modificado el archivo pom como sigue:

1) eliminó la "org.hibernate: hibernate.jpamodelgen" dependencia.

2) configurado el experto compilador-plug-in de la siguiente manera:

<plugin> 
    <groupId>>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.6.1</version> 
    <configuration> 
     <compilerArgument>-proc:none</compilerArgument>   
    </configuration> 
    </plugin> 
  • Estos dos pasos es asegurarse de que la hibernación-jpamodelgen no se ejecuta en piloto automático solo con agregarlo en la lista de dependencia del proyecto .Por favor refiérase a JPA Static MetaModel Generator doc.

3) añadió la siguiente plugin con configuración

<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> 

Esta configuración es directamente desde la página de documentación Hibernate JPA estático Metamodel Generador excepto para la línea siguiente:

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

Esta línea simplemente genera el metamodelo en el directorio nombrado después del nombre del complemento maven. A partir de este punto, obtuve todas las referencias de Netbeans trabajando en tiempo de diseño como si las clases generadas estuvieran en el subárbol del directorio src.

Espero que esto ayude,

J

0

Si está utilizando jaxws continuación, asegúrese de agregar un nodo <sourceDestDir> a la sección <configuration> de los jaxws plug-in "artefactos" en el pom apropiado. Por ejemplo:

 <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> 

Como se ha explicado anteriormente y como se ha señalado por netbeans, debe utilizar la ruta de generar-fuentes anexa con el nombre "plug-in". Afortunadamente, lo anterior aclara lo que significa "nombre de complemento" y cómo se supone que uno debe obtener jaxws para ubicar las fuentes generadas donde los netbeans necesitan que estén. Claramente, la sección de "configuración" será diferente para cada complemento ... Se necesita el nodo <sourceDestDir> para jaxws, otros complementos pueden usar otra cosa.

Cuestiones relacionadas