gpt4 book ai didi

JavaFx 可运行 JAR 导出不起作用

转载 作者:行者123 更新时间:2023-12-02 04:21:10 25 4
gpt4 key购买 nike

我使用 JavaFX 制作了一个简单的字典。我在我的应用程序中使用了 SQLite 数据库和一些图片。我使用 e(fx) Eclipse 将应用程序导出为可运行的 JAR 文件。我按照此处描述的步骤进行操作 - https://wiki.eclipse.org/Efxclipse/Tutorials/Tutorial1 .

导出后,我打开了 .JAR 文件。它打开成功,但无法正常工作。它没有显示数据库和图像的结果。

当我在构建和导出之前将应用程序运行到 Eclipse 工作区时,它工作得很好。

问题出在哪里?我该如何修复它?

以下是 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. 您正在尝试在项目中创建数据库文件。当您将项目打包为 jar 时,这将不起作用。您应该在项目之外给它一个url。数据库文件应始终放置在项目外部,以便当您将项目打包为 jar 时,仍然可以创建、读取和写入它们。

  2. 如果图像存在于您的 jar 中,则无法使用 io.File 加载图像。您需要使用类加载器来加载它们。

代码

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

关于JavaFx 可运行 JAR 导出不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32749045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com