2

由于某种原因,当应用程序在自包含部署之后执行时, 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 启动器在本地运行,则使用各种算法获取填充输出没有问题,但如果应用程序已打包为self-contained ,则会给出一个列表。

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

默认情况下仅包含 Java 运行时的一个子集。排除了一些可选且很少使用的文件以减小包大小,例如所有可执行文件。如果您需要默认情况下未包含的内容,则需要将其复制为后处理步骤。对于可安装的包,您可以从填充自包含应用程序文件夹后执行的配置脚本执行此操作。请参阅第 6.3.3 节,“使用插入资源进行自定义”。

引用的段落可能是可能的原因吗?为了将此功能包含到自包含运行时中,需要什么样的解决方法?

谢谢你。

4

1 回答 1

0

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

于 2013-08-06T14:56:38.210 回答