Tengo problemas para acceder a un par de clases en carpetas separadas para un proyecto que tengo en la escuela. Estoy usando Geany, y necesito poder tener estas clases para hablar, por así decirlo.
Hay una carpeta principal en la que todos los paquetes separados están contenidos como sus propias carpetas, y dentro de cada carpeta hay todas las clases específicas de ese paquete.
En mi caso, necesito poder tener algunas de las clases en un paquete gameObjects para usar en un paquete de componentes. Lo intenté
import gameObjects.Room;
import gameObjects.Entity;
pero me sale este error de compilación:
Position.java:3: error: package gameObjects does not exist
¿Hay alguna manera de hacer que estas clases hablen entre ellas? Gracias por adelantado.
EDITAR: La ruta del directorio se ve así:
C:UsersmattDesktopNew folderProject
y en esa carpeta de Proyecto hay varias carpetas donde están contenidas clases separadas. Necesito poder tener dos clases que se comuniquen entre sí desde diferentes carpetas dentro de mi carpeta de Proyecto.
Estoy compilando asi
C:UsersmattDesktopNew folderProjectcomponents>javac Position.java
EDIT # 2: Las clases Room y Entity están contenidas en una carpeta / paquete llamado gameObjects, y contienen, junto con todas las demás clases en esa carpeta
package gameObjects;
como su primera línea.
Respuestas
1 para la respuesta № 1Tengo problemas para acceder a un par de clases en carpetas separadas para un proyecto
Las carpetas son básicamente paquetes. Por lo tanto, Class Room y Entity no pueden estar en carpetas diferentes porque, como usted escribió:
import gameObjects.Room;
import gameObjects.Entity;
Estas clases deben estar en la carpeta / paquete "gameObjects". Así que supongo que la estructura de tu proyecto es incorrecta. Si desea mantenerlos en diferentes carpetas, entonces tendrá un paquete diferente.
Position.java:3: error: el paquete gameObjects no existe
Coloque ambas clases en la carpeta gameObjects y luego agregue la primera línea de cada archivo "paquete gameObjects";
0 para la respuesta № 2
Poniendo .java
los archivos en una carpeta separada en el explorador no significa que usted especifique alguna paquete para ellos. Para tener la capacidad de importar clases, debe asegurarse de especificar un paquete para ellos. Lo logras con poner:
package gameObjects;
línea en el comienzo de la adecuada .java
expediente. Después de especificar ese paquete, puede importar las clases contenidas en ese paquete con:
import gameObjects.nameOfClass;
Tenga en cuenta que si no especifica una package
al principio de .java
archivo, es entonces contenido en defecto paquete (usted tiene acceso a las clases contenidas en defecto paquete solo de otras clases contenidas en defecto paquete también). No puede importar clases que no tengan package nameOfYourPackage;
declaración al comienzo de .java
archivo, por lo que no puede utilizarlos fuera de defecto paquete.
Tenga en cuenta que Java se encarga de poner .java
archivos en carpetas específicas en su disco duro por su cuenta. Entonces, cuando especifiques que tu sample.java
archivo está contenido en yourpackage
, hay una carpeta llamada yourpackage
creado en el directorio de su proyecto y sample.java
se pone en esa carpeta.