在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的信息。我假设我在阅读这些信息时忽略了一些内容,因为我的逻辑似乎有点不正确。非常感谢!