Pergunta

Eu tenho um método que é chamado no início do meu programa, e ele funciona muito bem quando eu executar o frasco, mas quando eu executar o arquivo jnlp ele trava.

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

img é um BufferedImage, pelo caminho.

Foi útil?

Solução

As probabilidades são o caminho que você está dando para o arquivo ou permissões, não coincidem. Coloque o ctor arquivo em um bloco try, catch a exceção, e descobrir o que é.

Deve ser algo como isto:

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());
}

O código que você tem não faz nada com a exceção.

Você pode querer olhar para o exceções fio em o Tutorial Java.

actualizar

Veja meus comentários. Eu apenas tentei algo e confirmou o que eu estava pensando - código com um try {} e nenhum catch ou finally não vai mesmo compilar. se este é realmente o código que você acha que você está trabalhando, você provavelmente sido carregar um arquivo de classe de idade; este não foi 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
$ 

Outras dicas

Talvez a sua não carregar sua imagem corretamente. Não use a localização relativa do arquivo. Este será diferente para cada sistema operacional. Sua imagem no JAR você deve ser carregado corretamente como esta:

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

Isto irá carregar um arquivo chamado image.jpg que está localizado no mesmo local que a classe. Você também pode usar coisas como File.pathSeparator se o seu em outro local.

Use um desses dois métodos para carregá-lo como um 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)

Certifique-se de que você tem o correto nome do arquivo / caminho.

Certifique-se de que você tem acesso a arquivos para o sistema de arquivos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top