线程“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)
引起: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数据库文件中写入和读取。
答案 0 :(得分:0)
NoClassDefFoundError
通常表示在类路径中找不到该类。
以下是一些简单的步骤和要查找的内容(使用Netbeans)。
添加库时,请执行以下步骤
构建项目。如果您尚未更改任何默认构建设置,则应将所有库导出到[lib]文件夹。然后你需要检查一些事情:
检查以确保库实际存在。转到[文件]选项卡(如果没有打开,请转到[窗口] - >> [文件])并确保库位于[libs]目录中:
然后检查以确保库位于类路径中。检查MANIFIEST.MF
。
你应该在classapth上看到libs\AbsuluteLayout.jar
清单 - 版本:1.0
Ant-Version:Apache Ant 1.9.2
创建者:1.8.0_20-b26(Oracle Corporation)
Class-Path:lib / AbsoluteLayout.jar
X-COMMENT:Main-Class将通过构建自动添加 Main-Class:addjardemo.AddJarDemo
如果这一切都是正确的,这意味着当你运行你的jar时,jar应该与[lib]目录处于同一级别,因为应用程序依赖于那个确切位置的jar(相对于调用jar)。注意:这不是唯一的方法。有关更多信息,我会对“classpath”进行一些研究
如果你想将所有类都包含在你的 jar中,你需要构建一个“Uber Jar”。不确定如何使用Netbeans设置(如果可能的话),但您可以搜索类似的主题,例如this one
答案 1 :(得分:0)
这是我从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;
}
这是在包含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();
}
这是我连接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;
}
}
}