【 IntelliJ IDEA】 java.lang.IllegalStateException: Input not set!

问题描述

编译环境: IntelliJ IDEA COMMUNITY 2019.2

JDK 版本: jdk1.8.0_211

工程目录

G:\软件\Development Java\IntelliJ\javacodedance

报错代码

public static void readGiF() {
    try {
        System.out.println(ImgToCharacter.class.getClassLoader().getResource("").getFile());
        File f = new File(ImgToCharacter.class.getClassLoader().getResource("").getFile() + "image/" + Client.input);
        String name = f.getName();
        String suffix = name.substring(name.lastIndexOf('.') + 1);

        Iterator<ImageReader> iter = ImageIO.getImageReadersBySuffix(suffix);
        ImageReader reader = iter.next();
        ImageInputStream imageIn;
        //无法识别路径导致值为 imageIn= null ,随后 reader.getNumImages 出现异常
        imageIn = ImageIO.createImageInputStream(f);
        reader.setInput(imageIn);
        int count = reader.getNumImages(true);
        realImgs = new BufferedImage[count];
        charImgs = new BufferedImage[count];
        for (int i = 0; i < count; i++) {
            realImgs[i] = reader.read(i);
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
}

报错内容

/G:/%e8%bd%af%e4%bb%b6/Development%20Java/IntelliJ/javacodedance/out/production/javacodedance/
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Input not set!
	at com.sun.imageio.plugins.gif.GIFImageReader.getNumImages(GIFImageReader.java:151)
	at com.dance.ImgToCharacter.readGiF(ImgToCharacter.java:63)
	at com.dance.MainFrame.initBounds(Client.java:125)
	at com.dance.MainFrame.<init>(Client.java:99)
	at com.dance.Client$1.run(Client.java:35)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

 

解决方案

将整个工程放到英文且无空格的目录下运行。

修改前
G:\软件\Development Java\IntelliJ\javacodedance
修改后
G:\java\javacodedance

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值