Java getResource()在IDE中有效,但在可执行jar中返回null

时间:2018-08-29 11:59:37

标签: java javafx executable-jar getresource

我一直在寻找解决此问题的方法,但是我尝试的一切都失败了。

我正在使用IntelliJ,并尝试从Resource文件夹(标记为Resources文件夹,并且在src文件夹的路径中)中获取资源。

我创建了一个产生相同问题的简单示例。 可以说我想将标签的文本设置为资源文件夹中python文件的完整路径:

package sample;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.io.IOException;
import java.net.URISyntaxException;

public class Main3 extends Application {

    Stage window;
    Label lbl = new Label();

    @Override
    public void start(Stage primaryStage) throws Exception {
        window = primaryStage;
        window.setTitle("Title");

        VBox vbox = new VBox();

        Button loginBtn = new Button("Log In");
        loginBtn.setOnAction(e->{
            try {
                printScriptFile();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        });
        vbox.getChildren().addAll(loginBtn, lbl);


        Scene scene = new Scene(vbox, 300,200);
        window.setScene(scene);
        window.show();
    }

    public void printScriptFile() throws IOException {
        String path = null;
        try {
            path = getClass().getClassLoader().getResource("SuspendProcess.py").toURI().getPath();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
        lbl.setText(path);

    }


    public static void main(String[] args) {
        launch(args);
    }

}

此代码在IDE中可以正常工作,但是当我从jar运行它时,它无法正常工作。

结构:

the project structure

请问该如何解决?

0 个答案:

没有答案