このページで解決しない高度なJavaのシステム障害はJaTSにお任せください

Trouble 3: javacに関する問題



<Q3-1>"javac"コマンドを引数オプションなしで実行すると、通常のエラーメッセージではなく、ClassFormatErrorやHotSpotError、RuntimeExceptionが発生してしまいます。

SMPカーネル環境でのみ発生する模様です。

<発生環境>
OS RedHatLinux6.2 SMP
JDK JDK1.3
Vender Sun
<A3-1>
未解決です。Sunのコンパイラ開発チームにメールで問い合わせましたが、回答はありません。 JDK1.3.0_01やJDK1.3.1Betaに変更すると、頻度は低くなりましたが、依然として発生します。
Page Top

<Q3-2>コンパイルが成功したにもかかわらず、実行時にメソッドの長さが長すぎるとエラーになってしまいます。

以下のエラーが発生します。

java.lang.ClassFormatError: test/TestClass (Code of a method longer than 65535 bytes)
   at java.lang.ClassLoader.defineClass0(Native Method)
   at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
   at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:111)
   at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
   at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
   at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
   at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
   Exception in thread "main" 

<発生環境>
OS any
JDK JDK1.3.1
Vender Sun
<A3-2>
エラー文の通り、メソッドの長さが長すぎるためにエラーとなっているので、メソッドの分割を行う必要があります。
Page Top

<Q3-3>あるクラスの定数を変更し、コンパイルしたところ、別のクラスから、修正を行っていないにも関わらず、実行時例外が発生するようになってしまいました。


<発生環境>
OS any
JDK any
Vender any
<A3-3>
finalを用いた定数は、コンパイル時に値へ変換されます。
クラスAのCONST_VAL=3をCONST_VAL=6としてクラスAのみを再コンパイルした場合、 値を参照しているクラスBからは、依然としてCONST_VAL=3として扱ってしまうことになります。
finalによる定数を変更する場合は、その定数を利用しているクラス全てを再コンパイルする必要があります。
Page Top
アンケートフォーム

このページに掲載されていた情報は役にたちましたか?

  • とても役に立った
  • 役に立った
  • あまり役にたたなかった
  • 役にたたなかった

注意:本文書の内容に誤りがあり、またこの文書によって不利益を被っても、
Acroquest Technology 株式会社は一切関知いたしません。

  • 現象別Index
  • 原因別Index

Find Bugsバグ詳細

Find Bugs Bug Descriptions日本語版

RSSで更新情報を取得する

RSSとは、ホームページの更新情報を配信する為のフォーマットです。
RSSを利用すると、登録したページの情報が更新された場合に、更新情報を自動的に受け取る事ができます。

詳細

弊社小森が執筆致しました

Javaでオブジェクト指向開発

Javaプログラミング言語習得において、新人プログラマーの最初の障害は「オブジェクト指向の壁」です。
本書は、Javaのソフトウェア開発を中心に事業を発展させてきたAcroquest社の新人教育セミナーを加筆・書籍化したもので、大卒の新人に対して、ゼロからJava言語を教えてきた実績をフィードバックしています。

メールマガジン配信中

Javaトラブルシューティングのメルマガをはじめました!是非ご購読ください

詳細