java.lang.illegalargumentexception参数不能为null swt

java.lang.illegalargumentexception参数不能为null swt,java,swt,Java,Swt,我正在努力解决这个问题,有人能帮我吗。提前谢谢 public void gui_OCM() { Display d = new Display(); Shell s = new Shell(d, SWT.CLOSE); s.setSize(550, 390); s.setText("My Application"); s.setBackground(s.getDisplay().getSystemColor(10)); InputS

我正在努力解决这个问题,有人能帮我吗。提前谢谢

  public void gui_OCM()
  {  
    Display d = new Display();
    Shell s = new Shell(d, SWT.CLOSE);

    s.setSize(550, 390);
    s.setText("My Application");
    s.setBackground(s.getDisplay().getSystemColor(10));

    InputStream is= getClass().getClassLoader().getResourceAsStream("resource/Hello.PNG")
    Image my_image= new Image(d,is);
它始终显示以下错误:

线程“main”java.lang.IllegalArgumentException中的异常:参数不能为null 位于org.eclipse.swt.swt.error(未知源) 位于org.eclipse.swt.swt.error(未知源) 位于org.eclipse.swt.swt.error(未知源) 位于org.eclipse.swt.graphics.ImageLoader.load(未知源) 位于org.eclipse.swt.graphics.ImageDataLoader.load(未知源) 位于org.eclipse.swt.graphics.ImageData(未知来源) 位于org.eclipse.swt.graphics.Image(未知来源) 在ocm.ocm_GUI.GUI_ocm(ocm_GUI.java:69) 位于ocm.ocm_GUI.main(ocm_GUI.java:405) 备注:资源是我放置图像的文件夹
任何建议都将不胜感激。谢谢

您能在调用getResourceAsStream之前打印System.getProperty(“user.dir”)的输出吗?这样您就可以验证Java进程的工作目录了?它会打印我的项目工作区的位置。InputStream
。确保
资源
文件夹位于类路径上。或者,您可以将Hellp.PNG放在
OCM_GUI
类旁边,并使用
getClass().getResourceAsStream(“resource/Hello.PNG”)
打开资源流。@user3087291并且资源文件夹是否直接位于您的项目工作区下?例如,这可能会导致输入错误,或者对通向Hello.PNG文件的路径长度有一些限制,我建议您发布实际输出和项目文件夹的内容。谢谢大家。我只是把所有的图像放在src文件夹中,直接把路径作为图像的名称,它就工作了。我知道这不是一个可行的解决方案,但为了让它发挥作用,我不得不这么做。