Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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
Java 是什么导致AWT-EventQueue-0中出现此NullPointerException?_Java_Nullpointerexception_Event Dispatch Thread_Null Pointer - Fatal编程技术网

Java 是什么导致AWT-EventQueue-0中出现此NullPointerException?

Java 是什么导致AWT-EventQueue-0中出现此NullPointerException?,java,nullpointerexception,event-dispatch-thread,null-pointer,Java,Nullpointerexception,Event Dispatch Thread,Null Pointer,节目: 一个学习Java基础知识的简单模拟器。用户可以在提供的编辑器中输入自己的代码,从而将玩家移动到整个场地。此代码在单独的线程中执行。除了目前这个问题,程序工作正常,这个错误突然出现,以前没有出现过 问题: 出于某种原因,在随机的时间间隔内,玩家抛出下面所示的异常。玩家执行了什么动作并不重要,因为当执行一个无限重复的单个动作时,这也会在随机时间后显示出来。每次对该字段执行任何操作时都会引发此错误,这意味着控制台日志中会反复出现相同的错误消息 代码 这就是用户代码的执行方式,CompileAc

节目:

一个学习Java基础知识的简单模拟器。用户可以在提供的编辑器中输入自己的代码,从而将玩家移动到整个场地。此代码在单独的线程中执行。除了目前这个问题,程序工作正常,这个错误突然出现,以前没有出现过

问题:

出于某种原因,在随机的时间间隔内,玩家抛出下面所示的异常。玩家执行了什么动作并不重要,因为当执行一个无限重复的单个动作时,这也会在随机时间后显示出来。每次对该字段执行任何操作时都会引发此错误,这意味着控制台日志中会反复出现相同的错误消息

代码

这就是用户代码的执行方式,CompileActionListener调用JavaCompiler:

就我而言,其他代码不应该抛出上述执行(堆栈树不会提示我自己的任何类)。由于这是一个NPE,应该很容易追溯,但由于缺少对我的类的引用和随机时间间隔,我不知道

堆栈跟踪


感谢您的转发您可以使用功能强大的
try
/
catch
轻松解决您的问题,您可以使用功能强大的
try
/
catch
轻松解决您的问题。在Java7和Java8中,GlyphView.Java行799包含
startFrom=breaker.previous(s.offset+(startFrom-pstart))+(pstart-s.offset)
,这意味着
breaker
s
必须为null,但这些对象中的每一个都只需要几行就可以调用方法。而且两个变量都不会被重新分配。我想知道异常是否发生在BreakIterator.previous内部,堆栈框架被JIT删除。我认为这可能是java 8中的JIT问题,如本文所述。作者提出的解决方案是使用下面的命令行
javaThing-XX:CompileCommand=exclude,javax/swing/text/GlyphView,getBreakSpot
@ulix来禁用这个特定方法的JIT,现在它变得非常有趣了。我添加了said命令,到目前为止,我还没有得到任何异常。非常感谢你!正如您链接的作者所说,有一个“肮脏”的解决方案很好,但在我找到另一个解决方案之前,这个问题似乎已经在JRE 8u60和9中得到了解决:请参阅并发布一个奇怪的解决方案。在Java7和Java8中,GlyphView.Java行799包含
startFrom=breaker.previous(s.offset+(startFrom-pstart))+(pstart-s.offset)
,这意味着
breaker
s
必须为null,但这些对象中的每一个都只需要几行就可以调用方法。而且两个变量都不会被重新分配。我想知道异常是否发生在BreakIterator.previous内部,堆栈框架被JIT删除。我认为这可能是java 8中的JIT问题,如本文所述。作者提出的解决方案是使用下面的命令行
javaThing-XX:CompileCommand=exclude,javax/swing/text/GlyphView,getBreakSpot
@ulix来禁用这个特定方法的JIT,现在它变得非常有趣了。我添加了said命令,到目前为止,我还没有得到任何异常。非常感谢你!正如您链接的作者所说,有一个“肮脏”的解决方案很好,但在我找到另一个解决方案之前,这个问题似乎已经在JRE 8u60和9中得到了解决:请参阅和“他是一个传统的西班牙邮政公司,publicarlo en StackOverflow sólo en Inglés.”==>“我已经把你的帖子从西班牙语翻译成了英语。请用英语在StackOverflow上发帖。帮个忙,我已经把你的文章从西班牙语翻译成英语了。请在StackOverflow上仅用英语发布。”。
method = CompileActionListener.getNewActor().getClass().getMethod("main");
method.invoke(CompileActionListener.getNewActor());
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.text.GlyphView.getBreakSpot(GlyphView.java:799)
at javax.swing.text.GlyphView.getBreakWeight(GlyphView.java:724)
at javax.swing.text.FlowView$LogicalView.getPreferredSpan(FlowView.java:733)
at javax.swing.text.FlowView.calculateMinorAxisRequirements(FlowView.java:233)
at javax.swing.text.ParagraphView.calculateMinorAxisRequirements(ParagraphView.java:717)
at javax.swing.text.BoxView.checkRequests(BoxView.java:935)
at javax.swing.text.BoxView.getMinimumSpan(BoxView.java:568)
at javax.swing.text.BoxView.calculateMinorAxisRequirements(BoxView.java:903)
at javax.swing.text.BoxView.checkRequests(BoxView.java:935)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:343)
at javax.swing.text.BoxView.layout(BoxView.java:708)
at javax.swing.text.BoxView.setSize(BoxView.java:397)
at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1722)
at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:912)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1659)
at javax.swing.JEditorPane.getPreferredSize(JEditorPane.java:1332)
at java.awt.BorderLayout.layoutContainer(BorderLayout.java:821)
at java.awt.Container.layout(Container.java:1508)
at java.awt.Container.doLayout(Container.java:1497)
at java.awt.Container.validateTree(Container.java:1693)
at java.awt.Container.validateTree(Container.java:1702)
at java.awt.Container.validateTree(Container.java:1702)
at java.awt.Container.validate(Container.java:1628)
at javax.swing.RepaintManager$3.run(RepaintManager.java:704)
at javax.swing.RepaintManager$3.run(RepaintManager.java:702)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:701)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1719)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)