Pregunta

Tengo un método al que se llama al inicio de mi programa y funciona bien cuando ejecuto el archivo jar, pero cuando ejecuto el archivo jnlp se bloquea.

public void newImg(String i)
{
    try
    {
        File file = new File(i);
        img = ImageIO.read(file);
    }
}

img es una imagen de búfer, por cierto.

¿Fue útil?

Solución

Las probabilidades son la ruta que le está dando al archivo, o los permisos, no coinciden. Coloque el archivo ctor en un bloque de prueba, capture la excepción y averigüe qué es.

Debería verse algo como esto:

try {
    File file =  new File(i);
    img = ImageIO.read(file);
} catch (Exception ex) {
    // You probably want to open the java console, or use a logger
    // as a JNLP may send stderr someplace weird.
    Systemm.err.println("Exception was: ", ex.toString());
}

El código que tienes no hace nada con la excepción.

Es posible que desee consultar el subproceso de excepciones en El tutorial de Java.

actualizar

Ver mis comentarios. Solo probé algo y confirmé lo que estaba pensando: el código con un try {} y no catch o finalmente ni siquiera se compilará. Si este es realmente el código con el que cree que está trabajando, probablemente haya estado cargando un archivo de clase antiguo; éste no ha compilado.

$ cat Foo.java 
public class Foo {
     public void tryit() {
         try {
             File f = new File(null);
         }
     }
}
$ javac Foo.java
Foo.java:3: 'try' without 'catch' or 'finally'
         try {
         ^
1 error
$ 

Otros consejos

Tal vez no estás cargando tu imagen correctamente. No utilice la ubicación relativa del archivo. Esto será diferente para cada sistema operativo. Su imagen en el JAR debe cargarse correctamente de esta manera:

URL url = this.getClass().getResource("image.jpg");
Image img = Toolkit.getDefaultToolkit().getImage(url);

Esto cargará un archivo llamado image.jpg que se encuentra en la misma ubicación que la clase. También puedes usar cosas como File.pathSeparator si está en otra ubicación.

Use uno de estos dos métodos para cargarlo como un recurso:

http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getResource(java.lang.String) http://java.sun.com/javase/6/docs /api/java/lang/Class.html#getResourceAsStream(java.lang.String)

Asegúrese de tener el nombre / ruta de acceso del archivo correcto.

Asegúrese de tener acceso a los archivos del sistema de archivos.

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