タグ早見:インフォメーション←初めての方はここを見てね 日記 ゲーム

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2009/10/01 Javaのメソッド長制限

Javaの話ですいません。
ジャバジャバ。風呂釜洗浄の奴じゃないです。

今やってる開発にて、コンパイルをかける時点と、
単体テストをやった場合、特にエラーはでないものの、
「site」というJUnitにある、コードカバレッジ率
(「テストをした時に、このコードは通りましたよ」率のこと)
を出すコマンドを打つと何故かNGになってしまう、というケースがありました。

------------------------------
java.lang.ClassFormatError: Invalid method Code length XXXXX(数字) in class file (クラスファイル名)
------------------------------

DJUnitと絡めてaddValueReturnとかやってんですけど、
どうも二度目のテストでそこがひっかかってくる模様。
「test」コマンドでは何も起こらない皮肉。

「ClassFormatError」 の部分までしか読んでいなかったので、
なぜこんなことが起こるか理解できなかったんですが、←プログラマ失格じゃなかろうか
どうも、ぐぐったところ、Javaにはメソッド長制限というものがあるということ。

具体的に言えば、65535バイトを超えるメソッドを作ると起こるそうで、
要は「なげーメソッドかくんじゃねえよボケ」ってところです。
なんでこんな規定があるかは知りませんが、これなかったら
クソなげーうんこメソッドを作る奴がいるからかと思われる。

確かにXXXXXの部分が65535を超えた数字でした。
実際、ここで出ているエラーのメソッドはたいそう長い。
対策方法としては、長いメソッドを小分けする、ということに尽きるそうで。

どういう勘定をしているのかは調べていませんし、
なぜ普通のコンパイルで出ずにsiteでだけ出るのかがよくわかりませんが、
そうとわかれば話は早い。

長い所で切り分けられそうな所をぶつ切りにしてみましたところ、
このエラーは出なくなり、JUnitのカバレッジ率が跳ね上がってウヒョヒョ的な感じ。


それにしてもこれ、
私が開発着手する前からあった問題っぽいんですが…

-------------------------
参考資料
-------------------------
2007-09-22 - tranquillo

→なっげー配列もアウトの要因のようです。なるほど。

Javaのメソッドコード長制限とLLへの影響 - kaisehのブログ

→自動生成でうっかり長くなるコードをはかすようにすると、
えらい目にあうようです。

javaプログラムの長さに制限はあるか - Java Solution - @IT

>try-catch ブロック内のバイトコードが 32k を超えた場合とか
>コンパイルエラーが出た気がします(ちょっとあやふや)。
→ひょっとしてこれかな。

タグ : 日記 パソコンネタ プログラムネタ Java

コメントの投稿

非公開コメント

はじめまして
最新記事
最新コメント
最新トラックバック
タグ一覧
【201件】 コネタ
【86件】 ゲームネタ
【56件】 日記
【43件】 パソコンネタ
【32件】 ソフトウェア
【30件】 ハードウェア
【19件】 ガジェットネタ
【17件】 まんがネタ
【14件】 レトロゲーム
【12件】 食べ物ネタ
【11件】 ニンテンドーDS
【11件】 Wii
【11件】 ファミコン
【9件】 政治ネタ
【9件】 PS3
【7件】 えっちネタ
【7件】 XBOX360
【6件】 アニメネタ
【6件】 PSP
【5件】 毒ネタ
【5件】 アマゾンの罠
【4件】 訃報
【3件】 スーパーファミコン
【3件】 Twitter
【3件】 ゲームボーイ
【3件】 Firefox
【3件】 便利
【2件】 インフォメーション
【2件】 いっしょにとれーにんぐ
【1件】 PS
【1件】 Java
【1件】 音楽ネタ
【1件】 絵ネタ
【1件】 Windows
【1件】 ネットネタ
【1件】 NintendoDS
【1件】 セックスマシンガンズ
【1件】 愚行
【1件】 iPodTouch
【1件】 Windows7
【1件】 アッー!
【1件】 POS街
【1件】 チャージマン研
【1件】 PS2
【1件】 映画ネタ
【1件】 SEネタ
【1件】 メガドライブ
【1件】 歌ネタ
【1件】 アーケード
【1件】 DVD
【1件】 PC
【1件】 サーバ
【1件】 プログラムネタ
月別アーカイブ
カテゴリ
Twitter
最近やったゲーム
syuwanの最近やったゲーム
今やってるゲーム
syuwanの今やってるゲーム
あまぞに屋
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。