JavaFX自带应用程序缺少密码加密服务



由于某些原因,JavaFX当前似乎不支持Cipher加密服务的任何算法,当应用程序在自包含部署之后执行时,如下所述。

给定此代码:

import java.security.Security;
import java.util.Iterator;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.ListView;
import javafx.stage.Stage;

public final class Main extends Application
{
    @Override
    public void start(final Stage stage)
    {
        final ObservableList<String> ol = FXCollections.observableArrayList();
        final ListView<String> lv = new ListView(ol);
        for (final Iterator<String> iter = Security.getAlgorithms("Cipher").iterator(); iter.hasNext();)
            ol.add(iter.next());
        final Scene s = new Scene(lv, 500, 400);
        stage.setScene(s);
        stage.sizeToScene();
        stage.show();
    }
}

如果此代码通过java启动器本地运行,则使用各种算法填充输出是没有问题的,但如果应用程序已打包为自包含,则会给出列表。

然而,我也偶然发现了这一点:

默认情况下,只包括Java Runtime的一个子集。一些可选并且排除了很少使用的文件以减小包大小,例如所有可执行文件。如果您需要不包含在默认情况下,则需要将其作为后处理步骤进行复制。对于可安装程序包,您可以通过在填充所述自包含应用程序文件夹之后执行。看见第6.3.3节,"使用插入式资源进行定制。"

引用的段落可能是原因吗?需要什么样的变通方法才能将此功能包含在自包含运行时中?

谢谢。

查看此链接,默认情况下不会打包捆绑的JCE。

相关内容

  • 没有找到相关文章

最新更新