java-WARN:oejuc.AbstractLifeCycle:FAILED吗?

我正在使用MATLAB编写COMSOL(物理模拟软件)脚本.我的循环非常大,可以运行8000个仿真.我遇到以下问题.

>> fig2b
Error using fig2b (line 17)
Java exception occurred:
java.lang.NullPointerException
    at com.comsol.clientapi.engine.APIEngine.runMethod(Unknown Source)
    at com.comsol.clientapi.engine.APIEngine.runMethod(Unknown Source)
    at com.comsol.clientapi.impl.SolverSequenceClient.runAll(Unknown Source)

2014-05-10 22:18:37.692:WARN:oejuc.AbstractLifeCycle:FAILED qtp633622505{8<=5<=6/254,5}: java.lang.InterruptedException: sleep interrupted
java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.doStop(QueuedThreadPool.java:139)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
    at org.eclipse.jetty.util.component.AggregateLifeCycle.doStop(AggregateLifeCycle.java:107)
    at org.eclipse.jetty.websocket.WebSocketClientFactory.doStop(WebSocketClientFactory.java:221)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
    at com.comsol.client.interfaces.v.onClose(Unknown Source)
    at org.eclipse.jetty.websocket.WebSocketConnectionRFC6455.closeIn(WebSocketConnectionRFC6455.java:332)
    at org.eclipse.jetty.websocket.WebSocketConnectionRFC6455.handle(WebSocketConnectionRFC6455.java:257)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
    at java.lang.Thread.run(Unknown Source)
2014-05-10 22:18:37.693:WARN:oejuc.AbstractLifeCycle:FAILED org.eclipse.jetty.websocket.WebSocketClientFactory@4af2aad3: java.lang.InterruptedException: sleep interrupted
java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.doStop(QueuedThreadPool.java:139)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
    at org.eclipse.jetty.util.component.AggregateLifeCycle.doStop(AggregateLifeCycle.java:107)
    at org.eclipse.jetty.websocket.WebSocketClientFactory.doStop(WebSocketClientFactory.java:221)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:89)
    at com.comsol.client.interfaces.v.onClose(Unknown Source)
    at org.eclipse.jetty.websocket.WebSocketConnectionRFC6455.closeIn(WebSocketConnectionRFC6455.java:332)
    at org.eclipse.jetty.websocket.WebSocketConnectionRFC6455.handle(WebSocketConnectionRFC6455.java:257)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
    at java.lang.Thread.run(Unknown Source)

看到那条线2014-05-10 22:18:37.692:WARN:oejuc.AbstractLifeCycle:FAILED qtp633622505 {8&=; 5< = 6 / 254,5} :,我想这是由于一次运行太多模拟而引起的走.因此,我尝试将8000个仿真分别运行4次,每次运行包含2000个仿真.然后,有时运行成功,但有时由于相同的错误而中途失败!令我感到困惑的是,代码失败后我还没有碰过它.然后,我重新运行它,它起作用了! 根据上面的观察,我相信这与COMSOL无关,而是与Java或jetty或其他有关.专家们能建议我一些可能的解决方案或原因吗?

解决方法:

我看到您要求解决方案或原因,我不知道原因,但我可能有解决方案.

根据我的经验,这些Java错误通常发生在以下情况之一:

>运行需要很长时间才能执行的代码
>同时使用多个Matlab实例
>使用不太流行的图形工具(如visdiff)

以下是我发现有用的解决方案:

1.忽略该错误:听起来可能很奇怪,但是特别是在进行长时间计算时,Java错误通常以红色打印而不中断代码.在这种情况下,基本上等到代码完成并保存结果是我的首选解决方案.但是,一旦开始使用UI进行单击或键入,红色文本可能会变得很烦人,因此在运行完成后,我通常会重新启动matlab.

2.重新启动Matlab:当我没有任何东西在运行时,该问题很少发生.在这种情况下,我通常只是重新启动,通常足以使错误消失.

3.禁用Java:尽管我还没有被尝试的错误所困扰,但是当然可以在不使用Java的情况下使用Matlab.这可以通过使用-nojvm标志调用h matlab来实现.如果禁用了Java,则应避免出现任何Java错误.如果它们仍然会发生,则问题可能出在您调用的外部程序中.

4.捕获错误:尚未针对Java错误尝试过此操作,但可能会起作用.通常,任何会中断Matlab代码的内容都应视为错误.您可以在最重要的循环中放置一个try-catch块,尽管出现错误,它也可能可以工作.但是,这确实是一个绝望的措施,应被视为万不得已.

结论

如果您遇到与我相同的错误,并且两次运行相同的代码不会重现这些错误,只需将其视为可以忽略的警告.毕竟,java仅用于UI,而不用于计算.但是,如果您真的被他们困住了,可能是时候将支持请求发送给mathworks.

上一篇:java – Jetty如何创建自定义WebSocket


下一篇:深入拆解Tomcat &Jetty——极客时间