Pregunta

Tenemos un paquete que termina con excepción, por ejemplo,

package a.b.c.exception;

Nuestra base de código no tenía problemas hasta el Eclipse 3.3, sin embargo cuando nos desplazamos a eclipsar 3.4, se empezó a dar errores relacionados con este paquete:

"The package a.b.c.exception collides with a type"

Cuando refactorizar el nombre del paquete a a.b.c.exceptions, no hay problemas. ¿Esto se debe a un error en Eclipse 3.4 o hay algún ajuste para corregir este comportamiento?

¿Fue útil?

Solución 5

Me cambió una de las opciones de compilación en Eclipse y el problema desapareció. En virtud de las propiedades del espacio de trabajo: Compilador Java -> Errores / Advertencias ->     Cambio 'de importación no utilizados' de 'Advertencia' a 'Ignorar'.

Otros consejos

Es porque tiene una clase llamada exception (con una minúscula "e") en el paquete a.b.c y una a.b.c.exception paquete nombrado.

Se produce una colisión de nombres porque si usted tiene la a.b.c.exception.doSomething(); código - ¿Eso quiere decir que desea llamar el método doSomething() estática en la clase a.b.c.exception? ¿O significa que hay una clase llamada a.b.c.exception.doSomething que usted está tratando de invocar el constructor de?

Palillo con las convenciones de nombrado de Java - Ofertas en minúsculas, las clases comienzan con una mayúscula y el camello de los casos después -. Y nunca se verá este problema

========== ========== EDITAR

Esta es la única legítima razón de este error se debe apareciendo ...

No tiene por qué ser en su proyecto directamente, podría ser en otro proyecto o biblioteca que su proyecto depende. Esto debería mostrar que se produzcan hechos de la clase en cualquier lugar en la trayectoria de la estructura o su proyecto: Golpea la linterna botón en la barra mirando Eclipse -> Seleccione 'Buscar Java' -> introducir abcexception en el campo de búsqueda -> seleccione 'mayúsculas y minúsculas' - > seleccione 'Tipo' en 'Buscar' -.> asegurarse de que todas las opciones están seleccionadas para 'Buscar en'

¿Está utilizando cualquier herramienta que generan las clases? ¿Podrían ser puesta en el directorio de construcción de su proyecto? Cuando vea el error, si vas al directorio de construcción del proyecto, e ir hacia abajo en el a / b / c / directorio usted ve a un archivo .class de 'excepción'?

Por supuesto Eclipse en general podría tener un error (aunque yo esperaría que habría un informe de error en Eclipse 3.4 y que sería capaz de encontrar más quejas si era ...), el Eclipse podría ser instalar roto de alguna manera (¿alguien más puede abrir su proyecto en Eclipse 3.4? ¿podría hacer un Eclipse limpia 3.4 instalar en otro directorio? ¿aparece el error no?), o el proyecto podría ser mal estado de alguna manera (Crear un nuevo proyecto sin dependencias que no sea el JDK, crear el paquete abcexception en su nuevo proyecto, crear una clase en su proyecto para import a.b.c.exception.*; y ver si se produce el error.).

En Java no se puede tener un nombre de clase que es el mismo que el nombre del paquete.

Eso significa que el paquete de JDT debe haber aplicado esa regla sólo en 3.4

error 63668 por ejemplo.


Como Nate comentarios:

  

A excepción clase llamada no evitará la creación de excepción paquete .
   Caso importa .

     

Asimismo, recuerda el nombre completo de una clase incluye el paquete que se encuentra.
  Así a.b.SomeClass (nombre de la clase) es diferente de x.y.SomeClass (nombre de paquete).
  No habría ningún conflicto de nombres aquí.

     

El nombre de la clase y el nombre del paquete tienen que coincidir en ambos casos y el paquete de causar este error.

su respuesta más precisa .

me encontré con un problema similar en una gran base de código que he heredado. Resulta que el choque fue causado por un nombre de clase parcialmente calificado en un enlace JavaDoc.

Para paráfrasis, Eclipse se me está diciendo que tenía un choque paquete / tipo para a.b.c.d. al compilar a.b.c.d.London. Haciendo una búsqueda en el código java para a.b.c.d reveló que Eclipse pensó que un comentario JavaDoc en a.b.c.Paris Fue un partido. El comentario JavaDoc contenida {@} d.NewYork enlace. Cuando cambié el que se lea {@ link} a.b.c.d.NewYork se ha solucionado el error de compilación.

También hay que señalar que el NewYork no se ha importado a la clase de París, ya que sólo apareció en el comentario Javadoc. Esto también hizo un-resuelto en su forma abreviada y haciendo clic en el enlace en el comentario no funcionó. Por lo que es una referencia absoluta también hace que el trabajo de enlace JavaDoc.

Sé que esto va a sonar tonto, y posiblemente demasiado simple para ser verdad, pero lo resolvió exactamente el mismo mensaje de error:

  • Eliminación de toda la línea del nombre del paquete haciendo que el mensaje de error.
  • Guardar el archivo .java (Esto desencadena un nuevo error en la misma línea que indica "El paquete declarada '' no coincide con el paquete de espera"), que se debe hacer.
  • Re-escribir el nombre del paquete original en la misma línea.
  • Guardar el archivo .java.

No se pudo decir por qué esto funcionó, pero lo hizo, y Eclipse dejado de lanzar una rabieta en el acto.

Segura y rápida de escribir código.

-Goodge

Si usted tiene una clase Foo, no se puede tener un paquete que termina con Foo, como com.my.Foo.
Además, si usted está utilizando el estilo experto, usted tiene recursos en su proyecto en algo así como src / principales recursos /
Las carpetas en sus recursos también tienen un tipo de encapsulado y hay, también, no se puede tener una carpeta que contiene el nombre de su clase.

que sin duda se encontrará con este problema al desarrollar un plugin de Jenkins de acuerdo con las convenciones recomendadas.
si se siguen las convenciones Jenkins, y se crea un constructor en una clase llamada MyBuilder en x.y paquete, entonces también se supone que colocar su .jelly en una carpeta de recursos x.y.MyBuilder llamado. Esto dará como resultado el problema anterior.
Sin embargo, si el nombre de su carpeta de recursos x.y.myBuilder (aviso minúscula 'm' en myBuilder), a diferencia de la convención recomendada, el plugin todavía trabajo a medida que pretende

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top