Javafx SwingFXUtils显示NoClassFoundError

Javafx SwingFXUtils显示NoClassFoundError,javafx,gluon-mobile,Javafx,Gluon Mobile,我已尝试使用该函数 SwingFXUtils.fromFXImage 这将引发NoClassFoundError异常。如何在Gluon mobile上保存图像 SwingFXUtils或任何与Swing相关的类在Android上都不受支持 根据您的评论,您正在使用Charm Down PictureService从相机检索图像并在ImageView控件上显示: 现在,您希望将该图像保存到设备上的私有/公共存储位置 如果选中takePhoto,则它有一个savePhoto参数,可用于保存图片:

我已尝试使用该函数

SwingFXUtils.fromFXImage
这将引发NoClassFoundError异常。如何在Gluon mobile上保存图像

SwingFXUtils或任何与Swing相关的类在Android上都不受支持

根据您的评论,您正在使用Charm Down PictureService从相机检索图像并在ImageView控件上显示:

现在,您希望将该图像保存到设备上的私有/公共存储位置

如果选中takePhoto,则它有一个savePhoto参数,可用于保存图片:

// take photo and save picture
Services.get(PicturesService.class).ifPresent(service -> 
    service.takePhoto(true).ifPresent(imageView::setImage));
现在,如果您了解这是如何实现的,您将在图片外部存储器下找到您的图片:

File photo = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "IMG_"+ timeStamp + ".jpg");
您可以在/sdcard/Pictures下轻松访问该文件夹

此外,您还可以使用StorageService和getPublicStoragePictures,并通过目录检索最后添加的文件:

File picturesDir = Services.get(StorageService.class)
            .flatMap(s -> s.getPublicStorage("Pictures"))
            .orElseThrow(() -> new RuntimeException("Error retrieving public storage")); 
for (File pic : picturesDir.listFiles()) {
        System.out.println("file " + pic.getName());
}

您的用例是什么?那张图片是从哪里来的?我用过PictureService。ImageView ImageView=新的ImageView;Services.getPictureService.class.ifPresentservice->{service.takePhotofalse.ifPresentimage->imageView.setImageimage;};因此,我尝试从此图像中使用fromFXImage。好的,PictureService从相机或多媒体资料中返回图像,您想将其保存到私人或公共存储位置吗?是的,正确。完美。。。谢谢你再次帮助我!!我想补充一个问题。。。您可以通过告诉takePhoto true来保存图片。真正的大问题是。。。保存的图片的文件名是什么。文件夹中可能有几十个其他文件夹。在android下,文件名包含时间戳,但由于我不知道拍摄照片时的确切时间戳,我只能签出文件夹中的所有现有图片,并尝试找出最接近LocalDateTime的图片。现在?请不要告诉我这是我必须做的。你可以按上次修改对文件进行排序,然后得到第一个/最后一个?我不认为这有那么糟糕吗?嗯,我不想回答那个程序。谁说没有并行运行的服务或任何东西同时在该文件夹中创建多线程文件?如果在我拍照和之后试图查找最新文件之间发生了什么?我会选错的。可能不太可能,但也有可能。当前PictureService API的主要用途是检索JavaFX图像,并且可以选择保存文件。如果您还有其他需要,我们非常欢迎您扩展它并为开源做出贡献。
File picturesDir = Services.get(StorageService.class)
            .flatMap(s -> s.getPublicStorage("Pictures"))
            .orElseThrow(() -> new RuntimeException("Error retrieving public storage")); 
for (File pic : picturesDir.listFiles()) {
        System.out.println("file " + pic.getName());
}