我创建了一个连接MySQL数据库的java应用程序。 一旦通过程序安装创建者,我创建了一个.exe。
此可执行文件运行,第一个表单是登录。当他尝试访问数据库以确认登录的详细信息时会出现此错误。
java.lang.NullPointerException
有人可以帮我解决这个问题吗?路径是正确的,因为如果运行.jar,应用程序将正常运行。
对于给您带来的不便,我深表歉意。
只有这样才能更好地解释我的问题: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)
答案 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
。尝试使用正确的同步/锁定。