Java 尝试从.jar文件生成可执行文件时出错

Java 尝试从.jar文件生成可执行文件时出错,java,netbeans,Java,Netbeans,线程“main”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(Ma

线程“main”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)
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
我的代码:

试一试{

如何解决这个问题

更新:我解决了这个错误。
但现在我有另一个问题。如何创建与数据库相关的jar文件?我的应用程序从H2数据库文件中写入和读取。

NoClassDefFoundError
通常意味着在类路径上找不到该类

这里有一些简单的步骤和需要寻找的东西(使用Netbeans)

  • 添加库时,请执行以下步骤

  • 从[项目]资源管理器选项卡中右键单击项目中的[库]节点
  • 选择[Add Library]。绝对布局应为第一个布局。

  • 生成您的项目。如果您没有更改任何默认生成设置,则所有库都应导出到[lib]文件夹。然后您需要检查以下几项:

  • 检查以确保库确实存在。转到[Files]选项卡(如果未打开,请转到[Window]->[Files]),并确保库位于[libs]目录中:

  • 然后检查以确保库位于类路径上。检查
    MANIFIEST.MF

    您应该在classapth上看到
    libs\AbsuluteLayout.jar

    清单版本:1.0
    Ant版本:ApacheAnt 1.9.2
    创建人:1.8.0_20-b26(Oracle公司)
    类路径:lib/AbsoluteLayout.jar
    X注释:主类将由生成自动添加
    主类:addjardemo.addjardemo

如果所有这些都是正确的,那么这意味着当您运行jar时,jar应该与[lib]目录处于同一级别,因为应用程序在该确切位置依赖于该jar(相对于调用jar)。注意:这不是唯一的方法。有关更多信息,我将对“类路径”进行一些研究


如果您想将所有类都包含在jar中,您需要构建一个“Uber jar”。不知道如何使用Netbeans设置来实现这一点(如果可能的话),但您可以搜索类似的主题,如

这是我从db获取数据的函数

 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;
    }
}

这是我要连接到db的类

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;
    }                     
}

}

您需要包括您使用的类。在哪里以及如何使用?如何将IDE的AbsoluteLayout类包含在JAR中?在JAR中。这取决于您如何制作JAR。请检查导入并确保包含了所需的JAR文件。确保在创建可执行文件时包含支持jar。我在Netbeans中工作,在clean和biuld项目之后,我得到jar文件。我需要做什么?谢谢,我解决了这个错误。但现在我有另一个问题。如何创建一个依赖于数据库的jar文件?我的应用程序从H2数据库文件读写。你有H2 jar吗?只需执行与AbsolutLayout jar相同的操作,但当右键单击Library节点时,选择添加Jar。你希望我如何处理该图像?这是我要连接的类这是要打开的帧这是构建后的错误我无法访问数据。你真的需要学习如何调试NullPointerException。阅读没有人能帮你调试这将没有图像和代码。很抱歉如果您想共享任何代码,请发布代码,而不是异常图像。然后复制并粘贴堆栈跟踪
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;
    }                     
}