2012-03-15 7 views
0

私は、学校(Java 1.6.0_23を実行中)のLinuxコンピュータで正常に動作するJavaアプレットを作成しました。しかし、私は最近、自分自身のMacを買って、Java 1.6.0_29をインストールしました。問題は、私は私の新しいMacでプログラムを実行するときに実行しているとき、私はいくつかのエラーを取得し、次のとおりです。java 1.6.0_29を使用するとエラーが発生する

あなたは、アプレットが2人の歯科医と椅子4脚と歯科医のオフィスをシミュレートすることになっているだろう場合
Dentist1 is treating patient10 


Dentist0 is treating patient11 
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException 
    at sun.awt.RepaintArea.paint(RepaintArea.java:249) 
at apple.awt.ComponentModel.handleEvent(ComponentModel.java:263) 
at java.awt.Component.dispatchEventImpl(Component.java:4811) 
at java.awt.Component.dispatchEvent(Component.java:4565) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679) 
at java.awt.EventQueue.access$000(EventQueue.java:85) 
at java.awt.EventQueue$1.run(EventQueue.java:638) 
at java.awt.EventQueue$1.run(EventQueue.java:636) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
at  java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) 


Dentist1 is treating patient12 
at java.awt.EventQueue$2.run(EventQueue.java:652) 
at java.awt.EventQueue$2.run(EventQueue.java:650) 
at java.security.AccessController.doPrivileged(Native Method) 
at  java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:649) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException 
at sun.awt.RepaintArea.paint(RepaintArea.java:249) 
at apple.awt.ComponentModel.handleEvent(ComponentModel.java:263) 
at java.awt.Component.dispatchEventImpl(Component.java:4811) 
at java.awt.Component.dispatchEvent(Component.java:4565) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679) 
at java.awt.EventQueue.access$000(EventQueue.java:85) 
at java.awt.EventQueue$1.run(EventQueue.java:638) 
at java.awt.EventQueue$1.run(EventQueue.java:636) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) 
at java.awt.EventQueue$2.run(EventQueue.java:652) 
at java.awt.EventQueue$2.run(EventQueue.java:650) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:649) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 


Dentist0 is treating patient13 


Dentist1 is treating patient14´ 

待合室。私は、待合室に入るのは4人だけで、忙しくなければ歯科医に行くことができ、患者を待ってから治療する2つの歯科医スレッドに入ることができるように秘書のスレッドクラスを持っています。

最初の10人の患者さんがうまく動作しているように見えますが、そのエラーが表示された後、エラーが発生しても実行され続けます。 私のコードを見ずにこの問題を手伝ってくれるかどうかは分かりませんが、新しいJavaバージョンでしかこれが起こらない理由についての助言に感謝します。 Java 1.6.0_23で検出されないコードに問題がある可能性はありますか?

+1

コードではSwingコンポーネントを使用していますか?もっと早く助けを求めるには、[SSCCE](http://sscce.org/)を投稿してください。 –

+0

コード内で未割り当てのオブジェクトを呼び出している/使用していると思われます。デフォルトでは、それらはヌル値を持ちます。あなたのコードを共有してください。 –

答えて

0

作業を行うコードを書くのはかなり簡単です。バグはOS、ハードウェア、Javaのバージョンを変更するまで表示されません。 Java 5.0からJava 6または6から7へのアップグレードから生じる問題の重要な部分は、この種のバグに由来します。

あなたのSwingオブジェクトモデルは壊れている可能性がありますが、Java 6 Update 23では通知されません。しかし、使用しているハードウェア/ OSの違いが多い可能性があります。

私はこれを確認するには、Java 6アップデート23をダウンロード(あるいはその両方のシステムで同じバージョンを使用)、それはnull値を扱うことになると

+0

ありがとうございます。私はそれを試みますが、私は古いバージョンをMacにインストールできないようです。 – user1271710

0

Javaクラスのコードが最善ではありませんします。あなたのSwingコンポーネントにいくつかのヌル値を与え、それらをnull以外の値に変更するかどうかを確認してください。

関連する問題