JavaFX应用程序java.lang.RuntimeException:未找到工具包(涉及UNC路径)

JavaFX应用程序java.lang.RuntimeException:未找到工具包(涉及UNC路径),javafx,java-8,toolkit,packager,Javafx,Java 8,Toolkit,Packager,对于我所面临的问题,必须知道,我们将使用Java8(242)和JavaFX运行时202部署JavaFX应用程序。为了构建应用程序,我们使用javafx packager,它创建一个EXE文件,在Windows上启动应用程序,并在应用程序旁边部署特定的运行时 这种方式已经在许多不同的系统上运行了多年,直到今天,我们突然遇到了一个特定客户的问题,应用程序拒绝启动 经过长时间的挖掘,我们了解到我们的客户从UNC网络路径启动应用程序。我尝试了许多UNC别名,但javafx packager生成的EXE文

对于我所面临的问题,必须知道,我们将使用Java8(242)和JavaFX运行时202部署JavaFX应用程序。为了构建应用程序,我们使用javafx packager,它创建一个EXE文件,在Windows上启动应用程序,并在应用程序旁边部署特定的运行时

这种方式已经在许多不同的系统上运行了多年,直到今天,我们突然遇到了一个特定客户的问题,应用程序拒绝启动

经过长时间的挖掘,我们了解到我们的客户从UNC网络路径启动应用程序。我尝试了许多UNC别名,但javafx packager生成的EXE文件似乎无法处理UNC路径的主机名部分中的
符号。例如:

\\stack\u overflow.de\path\to\application\application.exe

使用packager生成的EXE启动应用程序会导致运行时异常:

java.lang.RuntimeException: No toolkit found
    at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:260)
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:209)
    at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:675)
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:695)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182)
    at java.lang.Thread.run(Unknown Source)
当使用eclipse生成的未更改的javafx示例和javafx packager生成的EXE文件时,也会出现此问题

EXE文件的应用程序CFG如下所示:

[Application]
app.name=application
app.mainjar=application.jar
app.version=1.0.3
app.preferences.id=applicationId
app.mainclass=com/path/to/main/Main
app.classpath=libs/somejar.jar;libs/morejars.jar;.
app.runtime=$APPDIR\runtime
app.identifier=applicationId

[JVMOptions]

[JVMUserOptions]

[ArgOptions]

当我通过
java-jarapplication.jar
启动应用程序时,一切似乎都很好。当我从任何其他映射的网络驱动器或不带
\uuuu
的UNC路径启动应用程序时,生成的EXE启动程序文件也可以正常工作

调用应用程序类的启动方法时发生异常:

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;


public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {

        //WE ARE NOT GETTING HERE; WHEN STARTED FROM EXE WITHIN AN UNC PATH WITH '_'
        try {
            BorderPane root = new BorderPane();
            Scene scene = new Scene(root,400,400);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);  //<-- here the error occurs
    }
}
导入javafx.application.application;
导入javafx.stage.stage;
导入javafx.scene.scene;
导入javafx.scene.layout.BorderPane;
公共类主扩展应用程序{
@凌驾
公共无效开始(阶段primaryStage){
//我们没有到达这里;当从UNC路径中的EXE启动时,使用“\ux”
试一试{
BorderPane根=新的BorderPane();
场景=新场景(根,400400);
scene.getStylesheets().add(getClass().getResource(“application.css”).toExternalForm());
初级阶段。场景(场景);
primaryStage.show();
}捕获(例外e){
e、 printStackTrace();
}
}
公共静态void main(字符串[]args){
发射(args)//