刚刚开始学java,老师给的代码在自己运行电脑上就出现了错误
错误:javax.imageio.IIOException:Can'treadinputfile!atjavax.imageio.ImageIO.read(Unknown...
错误:javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at com.jdk.game.Game.<clinit>(Game.java:30)
at com.jdk.test.Test.main(Test.java:12)
Exception in thread "main" java.lang.NullPointerException
at com.jdk.flying.Hero.<init>(Hero.java:22)
at com.jdk.game.Game.<init>(Game.java:40)
at com.jdk.test.Test.main(Test.java:12)
源代码:Hero.java
package com.jdk.flying;
import java.awt.image.BufferedImage;
import com.jdk.game.Game;
public class Hero {
public BufferedImage image;
public int x;
public int y;
public int width;
public int height;
public int life;
public int score;
public int fire;
//初始化一下玩家
public Hero() {
life = 3;
fire = 1;
image = Game.heroImg;
width = image.getWidth();
height = image.getHeight();
x = 150;
y = 150;
}
}
Game.java
package com.jdk.game;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
import com.jdk.flying.Hero;
//1.创建Game类 继承JPanel
public class Game extends JPanel {
//玩家
public Hero hero;
// 图片资源文件
public static BufferedImage background;
public static BufferedImage heroImg;
public static BufferedImage buttle;
public static BufferedImage diren;
// 在静态代码块中加载所有图片资源
// 静态代码快 是在类加载的时候运行的
static {
// 5.在读取图片资源的时候,可能会出现异常,需要使用try{}catch{}来包起来
try {
// 4.读取图片资源
background = ImageIO.read(new File(Game.class.getResource(
"/img/background.png").getFile()));
heroImg = ImageIO.read(new File(Game.class.getResource(
"/img/hero0.png").getFile()));
} catch (IOException e) {
e.printStackTrace();
}
}
public Game() {
hero = new Hero();
}
// 2.重写paint方法
public void paint(Graphics g) {
// 6.可以使用g.drawImage来绘制
g.drawImage(background, 0, 0, null);
drawHero(g);// 调用方法绘制玩家
}
// 9.绘制玩家的飞机
private void drawHero(Graphics g) {
g.drawImage(hero.image, hero.x, hero.y, null);
}
}
Test.java
package com.jdk.test;
import javax.swing.JFrame;
import com.jdk.game.Game;
public class Test {
public static void main(String[] args) {
//7.创建一个JFrame 框架 用来作为我们的游戏的框架
JFrame jFrame = new JFrame("飞机大战");
//8.把我们的画板放进去
Game game = new Game();
jFrame.add(game);
jFrame.setSize(480,700);//设置宽高
jFrame.setAlwaysOnTop(true);//设置总在最前
jFrame.setVisible(true);//设置访问
}
} 展开
at javax.imageio.ImageIO.read(Unknown Source)
at com.jdk.game.Game.<clinit>(Game.java:30)
at com.jdk.test.Test.main(Test.java:12)
Exception in thread "main" java.lang.NullPointerException
at com.jdk.flying.Hero.<init>(Hero.java:22)
at com.jdk.game.Game.<init>(Game.java:40)
at com.jdk.test.Test.main(Test.java:12)
源代码:Hero.java
package com.jdk.flying;
import java.awt.image.BufferedImage;
import com.jdk.game.Game;
public class Hero {
public BufferedImage image;
public int x;
public int y;
public int width;
public int height;
public int life;
public int score;
public int fire;
//初始化一下玩家
public Hero() {
life = 3;
fire = 1;
image = Game.heroImg;
width = image.getWidth();
height = image.getHeight();
x = 150;
y = 150;
}
}
Game.java
package com.jdk.game;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
import com.jdk.flying.Hero;
//1.创建Game类 继承JPanel
public class Game extends JPanel {
//玩家
public Hero hero;
// 图片资源文件
public static BufferedImage background;
public static BufferedImage heroImg;
public static BufferedImage buttle;
public static BufferedImage diren;
// 在静态代码块中加载所有图片资源
// 静态代码快 是在类加载的时候运行的
static {
// 5.在读取图片资源的时候,可能会出现异常,需要使用try{}catch{}来包起来
try {
// 4.读取图片资源
background = ImageIO.read(new File(Game.class.getResource(
"/img/background.png").getFile()));
heroImg = ImageIO.read(new File(Game.class.getResource(
"/img/hero0.png").getFile()));
} catch (IOException e) {
e.printStackTrace();
}
}
public Game() {
hero = new Hero();
}
// 2.重写paint方法
public void paint(Graphics g) {
// 6.可以使用g.drawImage来绘制
g.drawImage(background, 0, 0, null);
drawHero(g);// 调用方法绘制玩家
}
// 9.绘制玩家的飞机
private void drawHero(Graphics g) {
g.drawImage(hero.image, hero.x, hero.y, null);
}
}
Test.java
package com.jdk.test;
import javax.swing.JFrame;
import com.jdk.game.Game;
public class Test {
public static void main(String[] args) {
//7.创建一个JFrame 框架 用来作为我们的游戏的框架
JFrame jFrame = new JFrame("飞机大战");
//8.把我们的画板放进去
Game game = new Game();
jFrame.add(game);
jFrame.setSize(480,700);//设置宽高
jFrame.setAlwaysOnTop(true);//设置总在最前
jFrame.setVisible(true);//设置访问
}
} 展开
2个回答
2017-08-09 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
我拷过来运行了一下,程序没有问题,是你图片放置的路径有问题吧。而且你这程序看着好眼熟,你不会是沈阳中软陈翔龙的徒弟吧,我没有你的背景图片和英雄机图片,这做的是不是微信打飞机
更多追问追答
追问
是飞机大战,学校小实训的时候老师教的,并不是他的徒弟。图片的路径就是\ZCMU\src\img,这有问题吗,那应该放在哪里。刚开始学完全不懂啊
追答
MD写了一大长篇子被禁了。
就是问题就出在你Hero.java的第22行和Game.java的第30行,看看这两个是不是指向你图片的路径,如果这两行刚好是你填写图片路径的地方,那问题就很明显了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询