问题描述
编译环境: 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