(Solved)I need some help with Loading Images outside Eclipse IDE

Hello everyone! i would like help for a problem that i continuesly have… This is my first Post and sorry if my english or post is not perfect. I was working on a game and everytime i stuck on the same problem. While i try to load images, i succesded inside Eclipse IDE but when i export it i get error. I tryed to make a res folder and add it into my project libraries which used to solve this problem but at the moment again i have issues. I don’t know what to do or how to fix it. Is a bug of Eclipse IDE ? or something i am doing wrong.

My Resources class which i use to load all my images is the following:



public class Resources extends Component {
	private static final long serialVersionUID = -8912492884211057348L;
	public static BufferedImage bullet,craft,emeny,bg1,bg2;

	  public Resources(){
		
			try {
				 ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
				 InputStream input = classLoader.getResourceAsStream("bullets.png");
				 
				bullet = ImageIO.read(input);
				
				 input = classLoader.getResourceAsStream("airplane.png");
				craft = ImageIO.read(input);
				
				 input = classLoader.getResourceAsStream("background.png");
				bg1 = ImageIO.read(input);
			
				 input = classLoader.getResourceAsStream("enemy.png");
				emeny = ImageIO.read(input);
			} catch (IOException e) {
			}
		}
	
}


After that in my Main Method which is plane.class where i create a JFRAME for my game and i add a new board() which is where i do everything else. Here is my Main Plane method:


 extends JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 8957704465368507754L;
	public static final int DISPLAY_HEIGHT = 800;
	public static final int DISPLAY_WIDTH = 600;


	plane() {
	
		super("Plane");// INITIALISE THE JFRAME

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		setSize(new Dimension(DISPLAY_HEIGHT, DISPLAY_WIDTH));
		setLocationRelativeTo(null);

		setResizable(false);
		Resources r = new Resources();
		add(new board());
		setVisible(true);
	}

	public static int getDISPLAY_HEIGHT() {
		return DISPLAY_HEIGHT;
	}

	public static int getDISPLAY_WIDTH() {
		return DISPLAY_WIDTH;
	}

	public static void main(String[] args) {
		new plane();
	}

}

I create an Resources object with the name r which loads all the Images. And now about my Board class which the paint method looks solike this



	public void paint(Graphics g) {
		paintComponent(g);
		g.setFont(new Font("Arial", 0, 25));
		g.setColor(new Color(255, 5, 128));

		g.drawImage(Resources.bg1, back1.getX(), back1.getY(), this);
		g.drawImage(Resources.bg1, back2.getX(), back2.getY(), this);

		craft.paint(g);
		for (int i = 0; i < weapon.size(); i++) {
			weapon.get(i).paint(g);
		}
		for (int i = 0; i < 5; i++) {
			enemyarray[i].paint(g);
		}



When i run it though Eclipse IDE works excelent but when i want to create a stand alone .jar it throws me

Exception in thread “main” java…lang.IllegalArgumentException: input == null! to my Resourse Class.

I have continuesly have problems with this issue and sometimes i solve it but always seems to come back. I would like if someone could help me with issue.

In addition , while i was doing some research on how to load and read images i created this class

package com.petrosarts.plane;


import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.net.URL;

import javax.imageio.*;
import javax.swing.*;
 
/**
 * This class demonstrates how to load an Image from an external file
 */
public class LoadImageApp extends Component {
           
	 public static BufferedImage img;
	 public static  ImageIcon image;
    public void paint(Graphics g) {
        g.drawImage(LoadImageApp.img, 0, 0, null);
    }
 
    public LoadImageApp() {
       try {
    	   ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    	   InputStream input = classLoader.getResourceAsStream("strawberry.jpg");
    	
           img = ImageIO.read(input);

       } catch (IOException e) {
       }
 
    }
 
    public Dimension getPreferredSize() {
        if (img == null) {
             return new Dimension(100,100);
        } else {
           return new Dimension(img.getWidth(null), img.getHeight(null));
       }
    }
 
    public static void main(String[] args) {
 
        JFrame f = new JFrame("Load Image Sample");
             
        f.addWindowListener(new WindowAdapter(){
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
 
        f.add(new LoadImageApp());
        f.pack();
        f.setVisible(true);
    }
}

which runs perfectly and it works outside IDE which is wierd cause i tryed to do the same technique on mine but didn’t work out.
Thank you in advance for your help.