簡體   English   中英

當我嘗試從.jar文件制作可執行文件時出錯

[英]Error when i try to make executable file from .jar file

線程“主”中的異常java.lang.NoClassDefFoundError:org / netbeans / lib / awtextra / AbsoluteLayout

at ApplicationPackage.StartPage.initComponents(StartPage.java:300)
at ApplicationPackage.StartPage.<init>(StartPage.java:57)
at ApplicationPackage.Main.main(Main.java:30)

引起原因:java.lang.ClassNotFoundException:org.netbeans.lib.awtextra.AbsoluteLayout

at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 3 more

我的代碼:

嘗試{

 UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    } 
    catch (UnsupportedLookAndFeelException | ClassNotFoundException | InstantiationException | IllegalAccessException e) {
        JOptionPane.showMessageDialog(null, e.toString(), "Eroare la aplicarea stilului ferestrei", JOptionPane.ERROR_MESSAGE);
    }

    StartPage frame = new StartPage();
    frame.setVisible(true);      

如何解決呢?

更新:我解決了這個錯誤。 但是現在有另一個問題。 如何創建與數據庫具有依賴關系的jar文件? 我的應用程序從H2數據庫文件讀寫。

NoClassDefFoundError通常意味着在類路徑上找不到該類。

這是一些簡單的步驟和需要尋找的東西(使用Netbeans)。

  • 添加庫時,請執行以下步驟

    1. 在[Projects]資源管理器選項卡中,右鍵單擊項目中的[Library]節點。
    2. 選擇[添加庫]。 AbsoluteLayout應該是第一個。

  • 建立您的專案。 如果尚未更改任何默認的構建設置,則所有庫都應導出到[lib]文件夾。 然后,您需要檢查以下幾件事:

    1. 檢查以確保該庫確實存在。 轉到[Files]選項卡(如果未打開,請轉到[Window]-> [Files]),並確保該庫位於[libs]目錄中:

      在此處輸入圖片說明

    2. 然后檢查以確保庫位於類路徑中。 檢查MANIFIEST.MF

      在此處輸入圖片說明

      您應該在libs\\AbsuluteLayout.jar上看到libs\\AbsuluteLayout.jar AbsuluteLayout.jar

      清單版本:1.0
      Ant版本:Apache Ant 1.9.2
      創建時間:1.8.0_20-b26(Oracle公司)
      類路徑:lib / AbsoluteLayout.jar
      X-COMMENT:Main-Class將通過構建自動添加
      主類:addjardemo.AddJarDemo

如果所有步驟都正確,則意味着運行jar時,jar應該與[lib]目錄位於同一級別,因為應用程序在那個確切位置(相對於調用jar而言)依賴於該jar。 )。 注意:這不是唯一的方法。 有關更多信息,我將對“ classpath”進行一些研究

如果要將所有類都包含 jar中,則需要構建一個“ Uber Jar”。 不確定如何使用Netbeans設置執行此操作(如果可能的話),但是您可以搜索類似的主題,例如主題

這是我從數據庫獲取數據的功能

 public Vector getData(String query)throws Exception
    {
        Vector<Vector<String>> dataVector = new Vector<>();

        try (Connection myConnection = ConectDataBase.ConectToBD()) {
            PreparedStatement pst = myConnection.prepareStatement(query);
            ResultSet rs = pst.executeQuery();

            while(rs.next())
            {
                Vector<String> films = new Vector<>();
                films.add(rs.getString(1)); 
                films.add(rs.getString(2)); 
                films.add(rs.getString(3)); 
                films.add(rs.getString(4)); 
                films.add(rs.getString(5));
                films.add(rs.getString(6));
                films.add(rs.getString(7));
                films.add(rs.getString(8));
                films.add(rs.getString(9));
                dataVector.add(films);
            }
        }
        return dataVector;
    }

這是在包含Extracdet數據的幀中

public ListOfFilms() throws Exception {

        // extragerea datelor din baza de date
        PopulateDataTable dbengine = new PopulateDataTable();
        data = dbengine.getData("SELECT * FROM DataStructure ORDER BY id DESC");
        initComponents();

}

這是我的課程,連接到數據庫

public class ConectDataBase {

Connection myConnection;

public static Connection ConectToBD(){

    try {
        Class.forName("org.h2.Driver");
        Connection myConnection = DriverManager.getConnection("jdbc:h2:~//RatedMovies", "", "");

        return myConnection;
    }
    catch (ClassNotFoundException | SQLException e)
    {
        return null;
    }                     
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM