刚刚开始学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);//设置访问

}
}
展开
 我来答
育知同创教育
2017-08-09 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
根据javax.imageio.IIOException: Can't read input file!异常,意思是无法读取到文件,原因是background = ImageIO.read(new File(Game.class.getResource(
"/img/background.png").getFile()));代码中的文件不在本地或者路径不对,解决办法是将图片路径填写正确。
更多追问追答
追问

文件在的,路径好像也没错

追答
仔细检查路径,建议换成绝对路径试试。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
str夜风
2017-08-09 · TA获得超过272个赞
知道小有建树答主
回答量:333
采纳率:68%
帮助的人:197万
展开全部
我拷过来运行了一下,程序没有问题,是你图片放置的路径有问题吧。而且你这程序看着好眼熟,你不会是沈阳中软陈翔龙的徒弟吧,我没有你的背景图片和英雄机图片,这做的是不是微信打飞机
更多追问追答
追问
是飞机大战,学校小实训的时候老师教的,并不是他的徒弟。图片的路径就是\ZCMU\src\img,这有问题吗,那应该放在哪里。刚开始学完全不懂啊
追答
MD写了一大长篇子被禁了。
就是问题就出在你Hero.java的第22行和Game.java的第30行,看看这两个是不是指向你图片的路径,如果这两行刚好是你填写图片路径的地方,那问题就很明显了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式