现在给你渔 运行程序时出现的异常,对改程序很有帮助 请看这些信息,钥匙就在里面 javax.imageio.IIOException: Can't read input file! at javax.imageio.ImageIO.read(ImageIO.java:1279) at com.brackeen.javagamebook.graphics3D.texture.Texture.createTexture(Texture.java:66) at GameObjectTest.createPolygons(GameObjectTest.java:46) at com.brackeen.javagamebook.test.GameCore3D.init(GameCore3D.java:93) at GameObjectTest.init(GameObjectTest.java:37) at com.brackeen.javagamebook.test.GameCore.run(GameCore.java:66) at GameObjectTest.main(GameObjectTest.java:17) Exception in thread "main" java.lang.NullPointerException at GameObjectTest.createPolygons(GameObjectTest.java:48) at com.brackeen.javagamebook.test.GameCore3D.init(GameCore3D.java:93) at GameObjectTest.init(GameObjectTest.java:37) at com.brackeen.javagamebook.test.GameCore.run(GameCore.java:66) at GameObjectTest.main(GameObjectTest.java:17) ------------------------------------------------------------------- javax.imageio.IIOException: Can't read input file!很明显这是说找不到要读取的文件 既然是找不到文件我们就找文件吧, 关键是我们现在不知道文件应该放在什么地方.再看下一行 at javax.imageio.ImageIO.read(ImageIO.java:1279) 说明在读取图像时遇到了问题,ImageIO.java:1279指明了代码里出问题的位置在文件ImageIO.java 1279行 先别急着看这个代码,这个是javax.imageio.ImageIO里面的,也就是JDK里面报的异常,一般来说问题处在调用它的地方 接着找下面的 at com.brackeen.javagamebook.graphics3D.texture.Texture.createTexture(Texture.java:66) 打开 Texture 66行附近是这样 的 try { return createTexture(ImageIO.read(new File(filename)), shaded); } catch (IOException ex) { ex.printStackTrace(); return null; } 哈哈,看到filename了
运行程序时出现的异常,对改程序很有帮助
请看这些信息,钥匙就在里面
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(ImageIO.java:1279)
at com.brackeen.javagamebook.graphics3D.texture.Texture.createTexture(Texture.java:66)
at GameObjectTest.createPolygons(GameObjectTest.java:46)
at com.brackeen.javagamebook.test.GameCore3D.init(GameCore3D.java:93)
at GameObjectTest.init(GameObjectTest.java:37)
at com.brackeen.javagamebook.test.GameCore.run(GameCore.java:66)
at GameObjectTest.main(GameObjectTest.java:17)
Exception in thread "main" java.lang.NullPointerException
at GameObjectTest.createPolygons(GameObjectTest.java:48)
at com.brackeen.javagamebook.test.GameCore3D.init(GameCore3D.java:93)
at GameObjectTest.init(GameObjectTest.java:37)
at com.brackeen.javagamebook.test.GameCore.run(GameCore.java:66)
at GameObjectTest.main(GameObjectTest.java:17)
-------------------------------------------------------------------
javax.imageio.IIOException: Can't read input file!很明显这是说找不到要读取的文件
既然是找不到文件我们就找文件吧,
关键是我们现在不知道文件应该放在什么地方.再看下一行 at javax.imageio.ImageIO.read(ImageIO.java:1279)
说明在读取图像时遇到了问题,ImageIO.java:1279指明了代码里出问题的位置在文件ImageIO.java
1279行
先别急着看这个代码,这个是javax.imageio.ImageIO里面的,也就是JDK里面报的异常,一般来说问题处在调用它的地方
接着找下面的 at com.brackeen.javagamebook.graphics3D.texture.Texture.createTexture(Texture.java:66)
打开 Texture 66行附近是这样 的
try {
return createTexture(ImageIO.read(new File(filename)),
shaded);
}
catch (IOException ex) {
ex.printStackTrace();
return null;
}
哈哈,看到filename了
现在有两种方法可以找到它,一种是沿着filename一直找到它的来源
另一种是沿着异常堆栈一直找.
我用的工具是eclipse 在控制台中双击异常便能打开异常发生的地方,显示这部分代码.所以我沿着异常找. at GameObjectTest.createPolygons(GameObjectTest.java:48)在这个地方 你可以看到
Texture floorTexture = Texture.createTexture(
"../images/roof1.png", true);
也就是说 images文件价应该放在上一级目录.