当前位置: 首页 > 知识库问答 >
问题:

JavaFx runnable JAR导出不起作用

红砚文
2023-03-14

问题出在哪里?我怎么修好它?

下面是Controller类函数的代码:

package imran.jfx.application;

import java.io.File;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ResourceBundle;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;

public class Application_Controler implements Initializable{

    @FXML
    private HBox hBox;

    @FXML
    private Label searchLabel;

    @FXML
    private TextField searchWord;

    @FXML
    private VBox vBox;

    @FXML
    private Text BanglaMeaning;

    @FXML
    private TextArea bnMeaningTxt;

    @FXML
    private Text bAcaMeaning;

    @FXML
    private ScrollPane bAcaMeaningImg;

    @FXML
    private Label footerLabel;

    ResultSet result;
    PreparedStatement doQuery;
    Connection conn;
    String query;

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        try 
        {
            Class.forName("org.sqlite.JDBC");
        } 
        catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        String url="jdbc:sqlite:src/imran/ankurdb/meaning/bn_words.db";
        try 
        {
            conn = DriverManager.getConnection(url);
        } 
        catch (SQLException e) {
            e.printStackTrace();
        }
    }

    @FXML
    void showMeaning(ActionEvent event) throws Exception {
        bnMeaningTxt.clear();

        String text=searchWord.getText();

        query = "select en_word,bn_word from words where en_word='"+text+"'";

        doQuery = conn.prepareStatement(query);
        result = doQuery.executeQuery();

        int i=0;
        while (result.next()) 
        {
            if(i==0)
            {
                bnMeaningTxt.appendText(result.getString(1) + "\t\t" + result.getString(2));
                i++;
            }
            else
                bnMeaningTxt.appendText(" , "+result.getString(2));
        }

        File file = new File("src/imran/bnacademy/meaning/"+text);
        Image image = new Image(file.toURI().toString());
        bAcaMeaningImg.setContent(new ImageView(image));
    }

}

共有1个答案

韦睿
2023-03-14

这里有多重问题。

>

  • 您正试图在项目中创建数据库文件。当您已经将项目打包为jar时,这是行不通的。您应该在项目外部给它一个URL。数据库文件应该总是放在项目之外,这样当您将项目打包为jar时,它们仍然可以被创建、读取和写入。

    如果图像存在于jar中,则不能使用io.file加载图像。您需要使用类加载器来加载它们。

    URL url = getClass().getResource("/imran/bnacademy/meaning/" + text);
    Image image = new Image(url.toExternalForm());
    

  •  类似资料:
    • 这可能是个愚蠢的问题,但我无论如何也无法解决。我有一个JavaScript文件,其中包含我想要导出的各种函数。 当我调用这个方法(使用mocha)时,我得到一条错误消息“export function AddNumbers(…numbers)Unexpected token export”。该项目构建为ES6。有人知道我做错了什么吗? 最好的问候,托斯顿

    • 我有一个我写的程序的输出文件。它由FileWriter和BufferedWriter编写。 我是否错误地使用了FileWriter/BufferedWriter,或者它在.jar文件中不起作用?

    • 我试图合并2个简单的程序。我想制作成一个。jar文件,这是我编写的代码:(Project1.jar和Project2.exe都打包到这个。jar中) 当我在eclipse中运行项目时,一切都很好(两个文件都像我想要的那样被执行)。但是当我将这个项目导出到。jar并运行它时,什么也没有发生。我认为它与文件路径有关,因为它在Eclipse中运行时工作得很好。怎么解决这个?

    • 问题内容: 我已将项目导出到Eclipse中的可运行JAR。我的代码中有几个地方完成了以下操作。 现在,该项目为JAR形式,这些目录似乎不存在,并且加载这些文件失败。我很确定我要引用的文件都打包在JAR中。在导出到JAR时,目录是否以任何特定方式更改?关于如何进行这项工作还有其他想法吗? 问题答案: 您需要将它们视为类路径资源,而不是本地磁盘文件系统路径。当您将文件打包到JAR中并且您也不想依赖于

    • 问题内容: 以下是导入和导出SQLite数据库的工作方法。它的工作在除Android Pie外的所有android版本中都可以正常工作。当我尝试导入Android Pie时,它显示成功的Toast,但未还原数据库。谁能帮我解决Android Pie(API 28)问题。 我对文件系统没有太多经验。因此,举个例子会很有帮助。 问题答案: 在Android Pie +中,SQLite已更改为默认设置,