Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在尝试传递缓冲区映像_Java_Bufferedimage - Fatal编程技术网

Java 正在尝试传递缓冲区映像

Java 正在尝试传递缓冲区映像,java,bufferedimage,Java,Bufferedimage,嘿,java新手,我现在被卡住了,不知道我做错了什么,我正在编写一个简单的代码,它就像一个社交媒体平台一样工作,为了制作一个我需要包含的个人资料(姓名、图像、朋友、状态),我在BufferedImage@9304b1“在我的驾驶课上-谢谢你Boann 现在我运行并收到一个“线程中的异常”main“java.lang.NullPointerException 位于java.io.File。(未知源) package社会化; 导入java.awt.image.*; 导入java.io.File; 导

嘿,java新手,我现在被卡住了,不知道我做错了什么,我正在编写一个简单的代码,它就像一个社交媒体平台一样工作,为了制作一个我需要包含的个人资料(姓名、图像、朋友、状态),我在BufferedImage@9304b1“在我的驾驶课上-谢谢你Boann

现在我运行并收到一个“线程中的异常”main“java.lang.NullPointerException 位于java.io.File。(未知源)

package社会化;
导入java.awt.image.*;
导入java.io.File;
导入java.io.IOException;
导入java.util.ArrayList;
公共班级简介{
静态缓冲区映像profilePicture;//存储映像
ArrayList friends;//存储朋友列表
字符串名;
字符串状态;
公众简介(){
profilePicture=null;
friends=null;
name=null;
状态=空;
}
公共配置文件(字符串名称、字符串配置文件PictureName、字符串状态)引发异常{
this.name=名称;
试一试{
this.profilePicture=javax.imageio.imageio.read(新文件(profilePictureName));
}捕获(IOE异常){
抛出新异常(e);
}
这个状态=状态;
}
公共ArrayList getFriends(){
回报朋友;
}
公共静态缓冲区图像读取(文件输入)引发IOException{
返回null;
}
}
公务舱司机{
公共司机(){
//TODO自动生成的构造函数存根
}
公共静态void main(字符串[]args){
Profile JohnDoe=新的Profile();
约翰多(“约翰·多伊”BufferedImage@9304b1我的名字叫约翰;
}
}

这不是调用构造函数的方式:

Profile JohnDoe = new Profile(); 
JohnDoe(....);
如果执行
newprofile()
,则会构造对象并调用其no-arg构造函数,并且每个对象只能调用一次构造函数(构造时!),因此以下行无效。因此,将这些线连接在一起:

Profile JohnDoe = new Profile(....);
填写参数,包括配置文件图片的字符串路径,您将获得:

Profile JohnDoe = new Profile("John Doe", "path/to/your-profile-picture.jpg", "My name is John.");
我建议您从构造函数中删除
ArrayList friends
参数。这是没有用的,因为您在尝试向彼此的构造函数提供构造的
Profile
对象时会遇到鸡和蛋的问题

解决此问题的一种方法是直接使用空白列表初始化friends字段:

private final ArrayList<Profile> friends = new ArrayList<>();
希望这有帮助


好的,你新发布的代码显然没有抛出你所说的异常,因为它根本没有编译,但无论如何

首先,按照我前面解释的方式修复
main
中的构造函数调用

Profile
Driver
类的no-arg构造函数都不做任何事情,可以删除

删除
read
方法

您不希望
profilePicture
字段是
静态的

如果仅因为您使用的是没有该类的旧版本Java,而使用了
抛出新异常(e)
而不是
抛出新的未选中异常(e)
,则将其改为
抛出新运行时异常(e)
。使用这样的未检查异常类型的想法是为了避免在构造函数及其调用方上声明
抛出IOException
,这最终会使事情变得更容易。但是,如果您更愿意在构造函数上声明
抛出IOException
(或者
抛出Exception
,就像您当前所做的那样),那么您可以删除图像加载调用周围的try/catch/throw行。关键是,您不需要同时声明和捕获并重新抛出


您的主要问题是
”BufferedImage@9304b1“
不是文件名。(我想可能是,但可能不是,除非您有意重命名该文件以删除“.jpg”或“.png”或其扩展名。)请使用计算机上某个文件的路径和名称。

”BufferedImage@9304b1“不是有意义的代码。你想让它做什么?@Boann我正在尝试创建一个新的配置文件,但当我尝试添加图片时,我得到一个“BuffereImage无法解析为令牌上的变量语法错误,请删除这些令牌”什么图片?哪里您正在尝试从文件中加载一个吗?使用图形命令从头开始绘制一个?我正在尝试从文件加载一个“BufferedImage@9304b1是由BuffereImage的toString方法生成的临时调试id。它可以建议两个映像引用是否共享内存分配,但不能用于标识映像、引用映像或加载映像。要从Java文件加载图像,请搜索“从Java文件加载图像”谢谢您的帮助!!“我继续添加代码,现在又卡住了。”Joshfigles编辑了答案。
private final ArrayList<Profile> friends = new ArrayList<>();
public Profile(String name, String profilePictureName, String status) {
    this.name = name;
    try {
        this.profilePicture = javax.imageio.ImageIO.read(new File(profilePictureName));
    } catch (IOException e) {
        throw new UncheckedIOException(e);
    }
    this.status = status;
}