对可执行文件的错误java.lang.NullPointerException

时间:2014-05-07 15:17:46

标签: java

我创建了一个连接MySQL数据库的java应用程序。 一旦通过程序安装创建者,我创建了一个.exe。

此可执行文件运行,第一个表单是登录。当他尝试访问数据库以确认登录的详细信息时会出现此错误。

java.lang.NullPointerException

有人可以帮我解决这个问题吗?路径是正确的,因为如果运行.jar,应用程序将正常运行。

对于给您带来的不便,我深表歉意。

enter image description here

只有这样才能更好地解释我的问题:S

我很抱歉......我正在运行java aplication的可执行版本。


java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(Unknown Source)
    at sensores.forms.jTMainMenu.initComponents(jTMainMenu.java:786)
    at sensores.forms.jTMainMenu.<init>(jTMainMenu.java:57)
    at sensores.forms.jTLoginConsulta.jBLoginActionPerformed(jTLoginConsulta.java:351)
    at sensores.forms.jTLoginConsulta.access$000(jTLoginConsulta.java:59)
    at sensores.forms.jTLoginConsulta$1.actionPerformed(jTLoginConsulta.java:110)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

5 个答案:

答案 0 :(得分:3)

此类/行

中有错误
jTMainMenu.java:786

似乎你试图在代码的这一点加载图像,我不知道你是如何从你的java代码生成可执行文件的,但这可能是问题的根源。尝试将此图像放在可执行文件/ jar之外,并使用相对路径加载图像,例如&#39; ./ my_image&#39;。

如果您的用户链接到您的可执行文件,您还必须小心,在这种情况下,相对路径无法解决您的问题。在java中解决此问题的一种简单方法是获取源代码位置。

getClass().getProtectionDomain().getCodeSource().getLocation();

使用此位置查找图片。

答案 1 :(得分:1)

请检查Stacktrace中您获得NullPointerException的行号。 很容易找到空指针异常。对象为null或未初始化您正在调用方法

try{

   // add database connection statement here

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

//从命令提示符运行程序。

//你也可以在弹出窗口打印e.printstacktrace()来获取异常细节

答案 2 :(得分:1)

如果你创建一个.jar,将那个jar移到与IDE分开的某个地方(即它们的类路径),并启动jar,你会收到NullPointerException吗?

这可能是由资源,getResource,getResourceAsStreem,getBundle引起的,因为它们在Windows文件系统中不是区分大小写,但在jar中区分大小写(以及在Linux / MacOS下)。

文件也不能用于jar资源。)

您可以使用7zip左右查看jar,以检查所有路径。

答案 3 :(得分:1)

我认为没有在定义的路径中获取图像图标

at javax.swing.ImageIcon.<init>(Unknown Source)

答案 4 :(得分:1)

我有以下两个猜测:

  • 您的路径或类路径存在问题并加载资源
  • at sensores.forms.jTMainMenu.initComponents(jTMainMenu.java:786) 在sensores.forms.jTMainMenu。(jTMainMenu.java:57)

    表示某些内容已初始化。通常Swing / AWT使用多个线程,因此您可能会遇到竞争条件:在另一个线程将值设置为非null之前,对ImageIcon方法中的资源引用将传递给ìnitComponents 。尝试使用正确的同步/锁定。