Java 应用程序在 Netbeans 中将其构建为 .jar 后找不到文件?

标签 java netbeans build jar

我编写了一个显示图像和播放声音的应用程序。 这就是为什么它需要从项目的 src 文件夹中名为“recources”的文件夹加载图像和声音。

对于图像,我使用以下代码加载 png,然后显示它我的框架:

ImageIcon img = new ImageIcon(getClass().getResource("/recources/img.png"));

这对于在 Netbeans 内运行应用程序以及将其构建到 jar 中后也运行良好。

声音正在加载,如下所示:

public Sound(){

    try
    {

        File audiodata = new File("/recources/audio.wav");
        if(audiodata.exists()){
            audioInput = AudioSystem.getAudioInputStream(audiodata);

            clip= AudioSystem.getClip();
            clip.open(audioInput);
            clip.start();

        }
    }
    catch(Exception e){
        e.printStackTrace();
    }
}

这也在 Netbeans 中工作,但在完成的 jar 不行。 --> 空指针异常

我的代码需要更改什么?

还有什么不起作用:

我还想使用以下代码加载带有 jdbc 驱动程序的 sqllite 数据库:

public void getConnection() {
    try {
        Class.forName("org.sqlite.JDBC");
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(Lagerverwaltung.class.getName()).log(Level.SEVERE, null, ex);
    }
    try {
        Connection con = DriverManager.getConnection("jdbc:sqlite:recources/database.db");
    } catch (SQLException ex) {
        Logger.getLogger(Lagerverwaltung.class.getName()).log(Level.SEVERE, null, ex);
    }

}

它有同样的问题,当我在 Netbeans 中运行它时,它找到数据库,但在构建的 jar 中找不到数据库。

我将资源文件夹作为源添加到我的项目属性中。

最佳答案

尝试将声音类别更改为:

public Sound(){

    try
    {

        File audiodata = new File(this.getClass().getResourceAsStream("/recources/audio.wav").toString());
        if(audiodatei.exists()){
            audioInput = AudioSystem.getAudioInputStream(audiodata);

            clip= AudioSystem.getClip();
            clip.open(audioInput);
            clip.start();

        }
    }
    catch(Exception e){
        e.printStackTrace();
    }
}

并获取连接到:

public void getConnection() {
    try {
        Class.forName("org.sqlite.JDBC");
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(Lagerverwaltung.class.getName()).log(Level.SEVERE, null, ex);
    }
    try {
        Connection con = DriverManager.getConnection("jdbc:sqlite:"+this.getClass().getResourceAsStream("/recources/database.db").toString());
    } catch (SQLException ex) {
        Logger.getLogger(Lagerverwaltung.class.getName()).log(Level.SEVERE, null, ex);
    }

}

刚刚更改了文件的访问方式。希望它有效。告诉结果。

关于Java 应用程序在 Netbeans 中将其构建为 .jar 后找不到文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62388433/

相关文章:

使用多个标签构建

iphone - Visual Studio 不会使用 Xamarin 生成 iOS "ipa"可执行文件

java - 如何创建kafka压缩主题

Java获取当前文件名EXE

java - 从文件中读取,java使用Scanner

git - 如何在我的 NetBeans IDE 中设置 github 存储库?

java - 如何在新线程中进行此搜索

java - 当有人点击保存按钮时显示一个弹出窗口(JDialog)

java - 激活失败 - 适用于 Netbeans 的诺基亚 SDK

android - 是否可以避免每次运行项目时都必须删除根项目中的 “.gradle”文件夹?