2

java.lang.IllegalMonitorStateException: unlock of unowned monitor をスローすることがある次のコードがあります。

Runtime run = Runtime.getRuntime();
Process p = run.exec(SOME_COMMAND);

このコードは、アプリケーションの開始時にかなり早い段階で実行されます。

アプリケーションを手動で起動すると正常に動作します。私はそれで何の問題も見たことがありません(何百もの打ち上げのために)。

ただし、自動化のテストの一部として開始されると、このコードはその例外で失敗することがあります。私たちのテストの自動化は、次のことを行います。

  • 私たちのアプリをインストールしてください
  • すぐに起動する
  • いくつかのテストを実行する
  • アプリをアンインストールする
  • アプリを再インストールする
  • もう一度起動する

これがクラッシュのスタック トラックです。

  11-14 14:59:26.675: W/dalvikvm(3788): threadid=12: thread exiting with uncaught exception (group=0xb4120180)
    11-14 14:59:26.675: E/AndroidRuntime(3788): FATAL EXCEPTION: SomeThread
    11-14 14:59:26.675: E/AndroidRuntime(3788): java.lang.IllegalMonitorStateException: unlock of unowned monitor
    11-14 14:59:26.675: E/AndroidRuntime(3788):     at java.lang.ProcessManager.exec(ProcessManager.java:229)
    11-14 14:59:26.675: E/AndroidRuntime(3788):     at java.lang.Runtime.exec(Runtime.java:168)
    11-14 14:59:26.675: E/AndroidRuntime(3788):     at java.lang.Runtime.exec(Runtime.java:241)
    11-14 14:59:26.675: E/AndroidRuntime(3788):     at java.lang.Runtime.exec(Runtime.java:184)
    11-14 14:59:26.675: E/AndroidRuntime(3788):     at aaa.SomeThread.run(SomeThread.java:41)

アイデアや情報に感謝します。

4

0 に答える 0