Java messes imagem para cima quando eu executar o arquivo .jnlp
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.
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.