¿Eclipse no puede cargar imágenes después de exportar el paquete JAR?
La razón de este problema se debe principalmente al problema de la ruta, que a menudo se ejecuta normalmente en el proyecto, pero una vez empaquetado en un frasco, no se puede mostrar normalmente. Resumamos los métodos para resolver este problema:
1. Resuelva mediante el uso de archivos de recursos externos
Después de empacar el proyecto para generar JAR, cree una nueva carpeta y coloque todos los archivos de imagen utilizados en el proyecto y generó archivos JAR en este directorio. Mientras el código haga referencia a los archivos de imagen correctamente, como: Imageicon Image = new ImageCon (SwingResourceManager.getImage ("icons/logo.gif"));
De esta manera, el archivo de imagen y el archivo de clase no se colocan en el paquete juntos. El archivo de clase está en el paquete, y el archivo de imagen está en el directorio raíz del proyecto.
2. Resuelva mediante el uso de archivos de recursos internos
Coloque los archivos de imagen utilizados en el paquete del proyecto, y cuando el empaque, los archivos de imagen se ingresan en el archivo jar al mismo tiempo. Este método debe usar uno de los siguientes en el código específico:
Imageicon image = new Imageicon (this.class.getResource ("icons/logo.gif"));La siguiente es una descripción detallada de este método:
Cuando escribe un programa para interfaces gráficas, debe usar varios recursos de imagen. Entonces, cuando publica su programa, ¿cómo publica estos recursos de imagen?
La forma más simple es empaquetar estos recursos de imagen junto con su archivo de clase en un archivo JAR ejecutable, para que solo necesite publicar un archivo JAR para incluir todos los contenidos, y los usuarios pueden ejecutar el programa simplemente haciendo doble clic en el archivo JAR. Si empaqueta las imágenes en un archivo JAR, ¿cómo accede a estas imágenes al escribir programas?
¿Cuáles son los caminos para estas imágenes? Puede usar el método getResource () para resolver este problema.
Aquí analizamos las dos situaciones más comunes:
1. Empaque todos los recursos en Andy.jar, y su clase está en un paquete: Package Andycpp; Todos los recursos de su imagen se colocan en la carpeta de imágenes, y la carpeta de imágenes también está en el paquete Andycpp. De esta manera, el camino final es:
Andy.Jar
| __andycpp
| __ guitest.class
| __ Imágenes
| __ snap1.jpg
Debido a que la carpeta de imagen y la clase que la hace referencia se encuentran en el mismo nivel, puede acceder a ella a través de una ruta relativa:
java.net.url imgurl = guitest.class.getresource ("imágenes/snap1.jpg"); imageiCon img1 = new imageiCon (imgurl);¡Lo que debe prestarse atención aquí son problemas de casos! El interior del archivo JAR es sensible a la caja, por lo que si la imagen en sí se llama snap1.jpg y escribe la ruta a las imágenes/snap1.jpg, entonces la imagen no se encontrará. También debe tenerse en cuenta que cada clase (nota, no un objeto) tiene un método getResource (), pero no puede usarla casualmente. Solo puede usar el método getResource () de una clase que está en el mismo nivel que la carpeta de imagen. Por ejemplo, en la figura anterior, la clase y las imágenes Guitest están en el mismo nivel, por lo que debe usar el método getResource () de esta clase.
2. En otro caso, si tiene muchas clases y la estructura del paquete es muy complicada, entonces es poco probable que ponga la imagen y la clase al mismo nivel, pero debe colocar la imagen en la capa más externa y dejar que todas las clases accedan a la imagen a través de rutas absolutas:
Andy.Jar
| __andycpp
| __ guitest.class
| __ Imágenes
| __ snap1.jpg
El código es el siguiente:
java.net.url imgurl = guitest.class.getresource ("/images/snap1.jpg"); imageiCon img1 = new imageiCon (imgurl);¿Has visto la diferencia con el código anterior? La diferencia es muy sutil. Simplemente agregue una barra inalcadora "/" frente a "Imágenes". Esta barra inalcadora representa el directorio raíz, y no hay barra insegura representa la ruta relativa.
El artículo anterior habla brevemente sobre el problema de la ruta de las imágenes de empaque de Java en los frascos es todo el contenido que he compartido con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.