1. 程式人生 > >JAVA學習筆記——ClassLoader中getResource方法的路徑參數

JAVA學習筆記——ClassLoader中getResource方法的路徑參數

hid system java.awt plan 參數 異常 getc pat bubuko

  代碼如下,代碼無需過多關註,看getResource使用的地方就可以,已用註釋標出。

技術分享圖片
 1 import java.awt.Image;
 2 import java.awt.image.BufferedImage;
 3 import java.io.IOException;
 4 import java.net.URL;
 5 import javax.imageio.ImageIO;
 6  
 7 public class GameUtil {
 8     // 工具類最好將構造器私有化。
 9     private GameUtil() {
10      
11     } 
12 13 public static Image getImage(String path) { 14 BufferedImage bi = null; 15 try { 16 //getResource方法調用處 17 URL u = GameUtil.class.getClassLoader().getResource(path); 18 bi = ImageIO.read(u); 19 } catch (IOException e) { 20 e.printStackTrace();
21 } 22 return bi; 23 } 24 }
View Code 技術分享圖片
 1 import javax.swing.*;
 2 import java.awt.*;
 3 import java.awt.event.WindowEvent;
 4 import java.awt.event.WindowAdapter;
 5 
 6 public class GameFrame extends JFrame {
 7     public static void main(String[] args){
 8         new GameFrame().lauchFrame();
9 } 10 11 public void lauchFrame(){ 12 setVisible(true); 13 setTitle("灰機大戰"); 14 setBounds(200, 50, 800, 700); 15 addWindowListener(new WindowAdapter(){ 16 @Override 17 public void windowClosing(WindowEvent e) { 18 System.exit(0); 19 } 20 }); 21 } 22 23 @Override 24 public void paint(Graphics g){ 25 g.drawImage(bgImage, 0, 0, null); 26 g.drawImage(planeImage, 400, 650, null); 27 } 28 29 //給getResource方法傳入參數 30 private Image bgImage = GameUtil.getImage("material/bg.jpg"); 31 private Image planeImage = GameUtil.getImage("material/plane.png"); 32 }
View Code

程序運行時拋出異常,原因是resource(即要加載進程序的文件)所存放路徑不對,需放到getResource默認路徑下,解決方法如下:

技術分享圖片

解決,先得知getSource方法默認路徑:

技術分享圖片

技術分享圖片

圖示為需要把程序所要用的資源文件放到JavaSe文件夾裏。

註:默認路徑下已有“/“斜杠,所以傳入參數時前面無需再加"/"。

JAVA學習筆記——ClassLoader中getResource方法的路徑參數