在java应用程序中使用默认图像文件路径上载图像

在java应用程序中使用默认图像文件路径上载图像,java,nullpointerexception,filenotfoundexception,Java,Nullpointerexception,Filenotfoundexception,所以,我需要弄清楚,当用户没有选择任何图像时,试图设置默认图像文件路径时,我忽略了什么。我在浏览按钮中使用了JFileChooser,以获取图像路径(相对路径,而不是绝对路径),从而将图像路径存储在MySQL数据库中 问题在于我的imageFileUploader类。如果用户不想上传图像,我尝试将通用图像设置为默认图像。当我测试imageFileUploader类时,我得到一个空指针异常。我基本上有一个文本框,上面写着“没有上传任何文件”,如果这仍然是真的,那么它会上传默认图像。有人能看一下我的

所以,我需要弄清楚,当用户没有选择任何图像时,试图设置默认图像文件路径时,我忽略了什么。我在浏览按钮中使用了
JFileChooser
,以获取图像路径(相对路径,而不是绝对路径),从而将图像路径存储在
MySQL
数据库中

问题在于我的
imageFileUploader
类。如果用户不想上传图像,我尝试将通用图像设置为默认图像。当我测试imageFileUploader类时,我得到一个空指针异常。我基本上有一个文本框,上面写着“没有上传任何文件”,如果这仍然是真的,那么它会上传默认图像。有人能看一下我的代码,给我一些我忽略的东西吗?我将不胜感激

String imagePath = "";
            byte[] rawBytes = null;
            FileInputStream fileInputStream = null;

            if(imagePath.equals("No File Uploaded")) {//null pointer exeception here!!
                ClassLoader classLoader = this.getClass().getClassLoader();
                URL resources = classLoader.getResource("/abaApplicationImages/blankProfile.jpg");
                imagePath = resources.getFile();
            }else{
                //File fileObject = new File(imagePath);

            File fileObject = new File(imagePath);

            try {
                fileInputStream = new FileInputStream(fileObject);
            } catch (FileNotFoundException e) {

                e.printStackTrace();
                System.out.println("file not found");
            }

            int imageLength = Integer.parseInt(String.valueOf(fileObject.length()));
            rawBytes = new byte[imageLength];
            try {
                fileInputStream.read(rawBytes, 0, imageLength);
            } catch (IOException e) {

                e.printStackTrace();
                System.out.println("IO exception");

            }


        }
            return imagePath;
        }
错误消息:


java.io.FileNotFoundException:at java.io.FileInputStream.open(本机) 方法)位于java.io.FileInputStream。(未知源)位于 abapplication.ImageUploader.ImageUploader(ImageUploader.java:30)位于 abaApplication.ImageUploader.main(ImageUploader.java:59)文件不是 在线程“main”java.lang.NullPointerException中发现异常 abapplication.ImageUploader.ImageUploader(ImageUploader.java:40)位于 main(ImageUploader.java:59)


您没有验证
URL资源
是否为空。这可能就是NPE的来源


另外
ClassLoader.getResource()
从类路径加载资源,如果文件在映像文件上而不在类路径上,则您可能应该直接使用
FileInputStream

为任何好奇的人张贴异常消息,这是程序运行时收到的异常消息。java.io.FileNotFoundException:at java.io.FileInputStream.open(本机方法)at java.io.FileInputStream。(未知源)at abapplication.ImageUploader.ImageUploader(ImageUploader.java:30)at abapplication.ImageUploader.main(ImageUploader.java:59)abaApplication.ImageUploader.ImageUploader.main(ImageUploader.java:59)上的线程“main”java.lang.NullPointerException中未找到文件异常。因此,本质上java:30是fileInputStream=new fileInputStream(fileObject),java 40是fileInputStream.read(rawByte,0,imageLength.@11dimension,我的想法是默认图像将放在默认图像存储的类路径或相对路径中。或者我这样做是错误的吗?如果
getResource()
找不到它返回null的资源。这可能是NPE的原因,因为它找不到路径,所以
resources.getFile()
生成NPE。如果文件位于类路径上,则可以使用此方法。否则,使用普通的FileIO方法。通常
getResource()
用于读取打包JAR或WAR文件中的文件。请继续。感谢您的输入。我将详细阅读有关getResource和ClassLoader的信息。我假设我在阅读这些信息时忽略了一些内容,因为我的逻辑似乎有点不正确。非常感谢!