ダミーのクラスファイルを自分で作る

ダミーのクラスファイルなので自分で作るのも簡単です。やってみると色々と勉強になります。ダミーのクラスファイルを作りながらHelloIAppli.javaを作成するときに出たエラーを消してきましょう。

まずは

HelloIAppli.java:1: パッケージ com.nttdocomo.ui は存在しません。
HelloIAppli.java:3: シンボルを解釈処理できません。
シンボル: クラス IApplication  

の二つを消します。パッケージcom.nttdocomo.uiを作成して、その中にIApplicationクラスを入れれば良いです。

ダミーのクラスファイルを作業ディレクトリの下のclassesディレクトリに作ることに決めたので、そこに移動します。

D:\iAppli>mkdir classes
D:\iAppli>cd classes

パッケージcom.nttdocomo.uiに含まれるクラスはcom\nttdocomo\uiディレクトリに置かれないといけないので、それを作ります。

D:\iAppli\classes>mkdir com
D:\iAppli\classes>mkdir com\nttdocomo
D:\iAppli\classes>mkdir com\nttdocomo\ui

ではダミーのIApplicationクラスを作りましょう。ソースはこうなります(IApplication.java)。

package com.nttdocomo.ui;

public abstract class IApplication {}

ダミーなのでとても簡単。publicabstract等の修飾子は「iモード対応Javaコンテンツ開発ガイド 〜APIリファレンス編〜」に書かれてます。

これをcom\nttdocomo\ui\IApplication.javaとして保存します。そしてコンパイル

D:\iAppli\classes>javac com/nttdocomo/ui/IApplication.java

classesディレクトリをカレントディレクトリにしてcom/nttdocomo/ui/IApplication.javaと指定してコンパイルしてるのがポイント。

さて、これで狙い通りエラーが消えるかやってみましょう。作業ディレクトリに移動してclassesディレクトリをクラスパスに含めます

D:\iAppli\classes>cd ..
D:\iAppli>javac -bootclasspath classes;d:/j2me_cldc/bin/api/classes HelloIAppli.java
HelloIAppli.java:15: シンボルを解釈処理できません。
シンボル: クラス Canvas
位置    : HelloCanvas の クラス
class HelloCanvas extends Canvas {
                          ^
HelloIAppli.java:16: シンボルを解釈処理できません。
シンボル: クラス Graphics
位置    : HelloCanvas の クラス
    public void paint(Graphics g) {
                      ^
HelloIAppli.java:11: シンボルを解釈処理できません。
シンボル: 変数 Display
位置    : HelloIAppli の クラス
        Display.setCurrent(canvas);
        ^
エラー 3 個

狙い通りにエラーが消えました。

他のエラーも消してきましょう。CanvasGraphicsDisplayについても同様にCanvas.javaGraphics.javaDisplay.javacom\nttdocomo\uiディレクトリにおきます。classesディレクトリでコンパイルすると

D:\iAppli\classes>javac com/nttdocomo/ui/*.java
com/nttdocomo/ui/Canvas.java:3: シンボルを解釈処理できません。
シンボル: クラス Frame
位置    : com.nttdocomo.ui.Canvas の クラス
public abstract class Canvas extends Frame {}
                                     ^
エラー 1 個

とエラーが出ました。これは同様にFrame.javacom\nttdocomo\uiに置けば良いです。置いた後に気を取りなおしてもう一度コンパイルすると

D:\iAppli\classes>javac com/nttdocomo/ui/*.java

今度はエラーなしで通ります。

さて、そもそもの目的に戻ってHelloIAppli.javaをコンパイルすると

D:\iAppli>javac -bootclasspath classes;d:/j2me_cldc/bin/api/classes HelloIAppli.java
HelloIAppli.java:11: シンボルを解釈処理できません。
シンボル: メソッド setCurrent  (HelloCanvas)
位置    : com.nttdocomo.ui.Display の クラス
        Display.setCurrent(canvas);
               ^
HelloIAppli.java:17: シンボルを解釈処理できません。
シンボル: メソッド drawString  (java.lang.String,int,int)
位置    : com.nttdocomo.ui.Graphics の クラス
        g.drawString("Hello iAppli", 0, 12);
         ^
エラー 2 個

とエラーが二つになりました。もう一息という感じですか。

今度のエラーはメソッドがないと言ってます。定義してないので当たり前ですね。

com\nttdocomo\ui\Display.javaの中にメソッドsetCurrent

public static void setCurrent(Frame frame) {}

として定義します。同様にcom\nttdocomo\ui\Graphics.javaの中にdrawString

public void drawString(String str, int x, int y) {}

と定義します。

クラスファイルをコンパイルしときましょう。

D:\iAppli>cd classes
D:\iAppli\classes>javac com/nttdocomo/ui/*.java

さて準備は整った感じですね。HelloIAppli.javaをコンパイルします。

D:\iAppli>javac -bootclasspath classes;/j2me_cldc/bin/api/classes HelloIAppli.java

今度はエラーなしでコンパイルが通りました。目標達成です。

自作のクラスファイルを用いる場合は、プログラムを作るたびにこんな感じで、不足してるクラス、メソッドを追加していくと良いでしょう。


前の項目へ次の項目へ
「iαppliであそぼう!」のページへ
せぎてつ伝言板
このページの感想をどうぞ!
お名前(匿名OK):

メールアドレス:
Valid CSS! 最終更新日 : 2000年2月11日(日)
tetsu@segi.org