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

可执行文件上的错误java.lang.NullPointerException,java,Java,我创建了一个java应用程序来连接MySQL数据库。 通过程序install creator,我创建了一个.exe 这个可执行文件运行,第一个表单是login。当他试图访问数据库以确认登录的详细信息时,会出现此错误 java.lang.NullPointerException 有人能帮我解决这个问题吗?路径是正确的,因为如果运行.jar,应用程序将正常运行 给您带来不便,我深表歉意 只有这样才能更好地解释我的问题:S 我很抱歉。。。我正在运行java应用程序的可执行版本 请检查Stacktra

我创建了一个java应用程序来连接MySQL数据库。 通过程序install creator,我创建了一个.exe

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

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

给您带来不便,我深表歉意

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

我很抱歉。。。我正在运行java应用程序的可执行版本


请检查Stacktrace中获取NullPointerException的行号。 找到空指针异常非常简单。对象为null或未初始化调用该方法的对象

try{

   // add database connection statement here

}catch(Exception e){
   e.printstacktrace();
}
//从命令提示符下运行程序


//您也可以在弹出窗口上打印e.printstacktrace以获取异常详细信息

如果您制作了一个.jar,将该jar移动到与IDE分离的地方,即它们的类路径,然后启动jar,您是否收到NullPointerException

这可能是由resources、getResource、getResourceAsStreem、getBundle引起的,因为它们在Windows文件系统中不区分大小写,但在JAR和Linux/MacOS下区分大小写

此外,该文件不能用于jar资源


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

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

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

我有以下两个猜测:

路径或类路径和加载资源有问题 台词

位于sensores.forms.jTMainMenu.initComponentsjTMainMenu.java:786 at sensores.forms.jTMainMenu.jTMainMenu.java:57

指示某些内容已初始化。通常Swing/AWT使用多个线程,因此这里可能有一个争用条件:在另一个线程将该值设置为非null值之前,将资源的引用传递给ìnitComponents方法中的ImageIcon。尝试使用适当的同步/锁定


您在这个类/行中有一个错误

jTMainMenu.java:786
似乎您试图在代码的这一点上加载图像,我不知道您是如何从java代码生成可执行文件的,但这可能是问题的根源。尝试将此映像放在可执行文件/jar之外,并使用相对路径加载映像,如“/my_image”

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

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

并使用此位置查找您的图像。

Stacktrace和code?不,不幸的是,如果没有像前面的注释那样的更多上下文,我们将无能为力。显然,您正在尝试取消引用设置为null的对象。很抱歉,如果没有看到任何代码或调试信息,我们将无法进行更详细的说明。您可以尝试从命令行启动exe并查看ia输出。感谢大家的回复。如何运行可执行版本,不会出现特定错误。非常感谢您的回复。我用Stacktrace编辑我的问题。这有助于理解我的问题?如果我创建一个.jar,将该jar移动到与IDE分离的某个地方,即它们的类路径,然后启动jar,我会收到另一个与NullPointerException不同的错误…令人失望,但让jar独立工作将是第一个里程碑。如果ClassNotFoundException,则需要在类路径上使用库JAR,或者更好地使用META-INF/MANIFEST.MF类路径条目。
getClass().getProtectionDomain().getCodeSource().getLocation();