Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;AWT-EventQueue-0“;MySQL JDBC java项目上的java.lang.NullPointerException错误_Java_Mysql_Eclipse_Jdbc_Lamp - Fatal编程技术网

&引用;AWT-EventQueue-0“;MySQL JDBC java项目上的java.lang.NullPointerException错误

&引用;AWT-EventQueue-0“;MySQL JDBC java项目上的java.lang.NullPointerException错误,java,mysql,eclipse,jdbc,lamp,Java,Mysql,Eclipse,Jdbc,Lamp,我是ubuntu新手,在过去的几天里,我安装了eclipse和lamp来处理一个已经在windows7上运行的项目。问题是相同的连接字符串不起作用。下面是我尝试连接的witch中的一段代码: String stringaConn = null; String nomeClasse = null; stringaConn = "jdbc:mysql://localhost/cinemapreverificasql?user=root"; no

我是ubuntu新手,在过去的几天里,我安装了eclipse和lamp来处理一个已经在windows7上运行的项目。问题是相同的连接字符串不起作用。下面是我尝试连接的witch中的一段代码:

    String stringaConn = null;
        String nomeClasse = null;
        stringaConn = "jdbc:mysql://localhost/cinemapreverificasql?user=root";
        nomeClasse = "com.mysql.jdbc.Driver";
        try {
            Class.forName(nomeClasse);
            System.out.println("forName eseguito");
        } catch (ClassNotFoundException e) {
            System.out.println("Classe nomeClasse - Driver non trovata");
        }
        try {
            f.conn = DriverManager.getConnection(stringaConn);
            System.out.println("Aperta la connessione");
        } catch (SQLException e) {
            System.out.println("Stringa di connessione errata");
        }
它进入第二个catch并打印字符串“Stringa di connessione errata”。以下是一个输出示例:

forName eseguito
Stringa di connessione errata
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at gestioneDegliEventi.Gestione.windowOpened(Gestione.java:199)
    at java.awt.Window.processWindowEvent(Window.java:2048)
    at javax.swing.JFrame.processWindowEvent(JFrame.java:296)
    at java.awt.Window.processEvent(Window.java:2009)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
在internet上搜索时,我尝试了在以下位置更改连接字符串的解决方案:

jdbc:mysql://localhost:3306/cinemapreverificasql?user=root

并使用
sudo ufw allow 3306授予权限,但出现的错误相同。可能是什么错误?

好的,现在您已经显示了实际发生爆炸的线路:

stmSql = f.conn.prepareStatement("select * from film");
并且
f.conn
为空。这是因为当您为f.conn分配一个值时,如果出现任何错误,您会打印出一条错误消息,然后继续运行,就像什么都没有发生一样:

try {
    f.conn = DriverManager.getConnection(stringaConn);
    System.out.println("Aperta la connessione");
} catch (SQLException e) {
    System.out.println("Stringa di connessione errata");
}
不要这样做。这里不要捕捉异常。您确实没有正确处理它,因为在catch语句之后,您的对象还没有准备好使用。您也在吞咽异常,而不显示其中的任何信息,这使得找出真正的错误变得更加困难

您展示的方法应该声明它可以抛出
SQLException
,然后不尝试捕获任何内容。这样,如果出现问题,你会立即停止,而不是在注定要失败的时候继续

当您在实际记录异常的地方记录该异常时,请记录整个异常,而不仅仅是一条说明有问题的消息。异常信息完全可能会告诉您连接字符串到底出了什么问题


哦,您可能也不应该在UI线程中执行这些操作,但这是一个非常独立的问题。

那么第199行是什么?您在哪里初始化
f
?在第199行有
stmSql=f.conn.prepareStatement(“从胶片中选择*),并且存在错误原因。
f.conn
为空
f
在构造函数中初始化,
conn
f
对象中是公共的。好的,谢谢你的建议。问题只是权限问题,root用户有一个win上没有的密码。