Java 尝试访问jar路径时发生调用异常

Java 尝试访问jar路径时发生调用异常,java,intellij-idea,javafx,Java,Intellij Idea,Javafx,我得到一个例外: "C:\Program Files\Java\jdk1.8.0_121\bin\java" -Dfile.encoding=windows-1254 -jar C:\Users\Jeredriqs\IdeaProjects\Exporter\out\artifacts\Exporter\Exporter.jar Exception in Application start method java.lang.reflect.InvocationTargetException

我得到一个例外:

"C:\Program Files\Java\jdk1.8.0_121\bin\java" -Dfile.encoding=windows-1254 -jar C:\Users\Jeredriqs\IdeaProjects\Exporter\out\artifacts\Exporter\Exporter.jar
Exception in Application start method
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
    at sample.Main.start(Main.java:213)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
    ... 1 more
Exception running application sample.Main

Process finished with exit code 1
但是我看了看我的代码,不明白为什么会发生这种情况。它与普通java类完美结合,但由于某些原因无法运行jar文件

例外情况中提到的行是:

文件查询=新建 文件(this.getClass().getClassLoader().getResource(“”.getPath()+“\Config\querys.ini”)


任何帮助都将不胜感激。

如果它捆绑在jar文件中,它就不再是一个文件(jar文件本质上是一个zip文件),因此您无法从中创建文件对象。您可以将其作为资源加载并从中获取流,尽管我不知道您的
QueryManager
类是否可以处理流。您希望
getResource(“”
找到什么资源?如果在提供的路径中找不到资源,
getResource()
只返回
null
=>异常。
    File fileProfiles = new File(this.getClass().getClassLoader().getResource("").getPath() + "\\Config\\Config.properties");

    if (fileQueries != null && !fileQueries.toString().isEmpty() && fileQueries.exists() && !fileQueries.isDirectory()) {


        QueryManager queryManager = new QueryManager();
        queryManager.readQueries(fileQueries.toString(), ";");
        comboQueries = queryManager.comboQueries;
        if (queryManager.isSuccessSql) {
            arrayNames = new String[comboQueries.size()];
            arrayQueries = new String[comboQueries.size()];
            int index = 0;
            for (ComboQuery cmb : comboQueries) {
                arrayNames[index] = cmb.getName();
                arrayQueries[index] = cmb.getQuery();
                index++;
            }
            cmbQuery.getItems().addAll(arrayNames);

        }


    } else {

        fileQueries.getParentFile().mkdirs();
        fileQueries.createNewFile();
        FileOutputStream fileOutputStream = new FileOutputStream(fileQueries, false);

    }