1. 環境変数pathあるいはclasspathの問題
    症状: コマンドプロンプトにてjavacが動かない。
    
    原因:javacのある場所にpathが通っていない。
    
    対処:自分のパソコンのjavacのあるところを探し、環境変数に登録する。
    
    最新のjavaの場合
    
    C:\Program Files\Java\jdk1.5.0_06\bin
    
    を登録する。
    
    classpathの場合は
    
    C:\Program Files\Java\jdk1.5.0_06\lib\tools.jar
    
    にするが、classpathの文字列の中に空白が入っていると不味いらしい。従ってダブルコーテーションでくくります。
    
    set classpath="C:\Program Files\Java\jdk1.5.0_05\lib\tools.jar"
    
    \はブラックボードの都合(UTF, unicode)で逆スラッシュに見えますが、windows上では半角の¥です。
    
  2. 文字化けする
    コンパイル時に不可解なエラーが1行目から出る。ソースを見ても心当たりが無い場合はこれの可能性が高いでしょう。
    
    原因:ブラックボードがunicodeを用いているためコピーなどをするとコード変換がされないか、正しく行なわれない。
    
    予防法:秀丸でエンコード表示にする。
    
    その他→動作環境→上級者向け設定にチェックを入れる
    
    左側にある設定の対象のウィンドウをあけて→高度なウィンドウ
    
    タイトルバーの表示のところのエンコードの種類を常に表示にする→OK
    
    最新の秀丸は以下からダウンロードできます。
    
    http://hide.maruo.co.jp/
    
    対処法:秀丸で名前を付けて保存を選びエンコードの種類のところを「日本語(Shift-JIS)」にして保存する。
    
    -----------------------------------------------------------------------------------------------------
    
    C:\TINISDK\src\temp>・ソ@echo off
    '・ソ@echo' は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。
    
    はbuild.batがunicodeになっているためですから、shift-JISに変更してください。
    つまり、秀丸で保存のときに、名前をつけて保存にし、エンコードをshift-JISにします。
    
  3. iTunesあるいはQuickTimeの問題
    
    iTunesあるいはQuickTimeのインストーラが勝手に環境変数classpathを書き換えてしまっているようです。(常識的には付け加える)
    
    正常な値をコンパイルのバッチファイルに書き込むか、コマンドプロンプト用に作ったauto.batを書き換えてください。
    
    別法:jdkを再インストールすると多分正しい環境変数がセットされると思うが、これは素人の方法。
    
    iTunesが入っていて正しくコンパイルされている人はiTunesをインストールしてからJavaをインストールしたためと思われます。
      
    
  4. 温度センサーのコンパイル
    java.lang.RuntimeException: Could not finish loading: java.lang.ClassNotFoundException: Could not find the class com/dalsemi/onewire/container/OneWireContainer28
    
    Could not finish loading:いくつかのファイルを集めて一つのtini型のファイルを作るときに集めきれなかった。
    
    というエラーは一番最後のOneWireContainer28に着目する。
    
    ドキュメントを見てこれは何かと調べる。
    
    これは温度センサーのクラスであることが分かる。
    
    -add OneWireContainer28を付け加える。
    
    
  5. TINIの日付時間がおかしい
    
    温度センサーのプログラムで、表示される日付時間がおかしいのはTINI内部の時計が狂っているからです。
    
    設定するには
    
    4月29日14時41分の場合は次のように指定します。JSTは+9でもOKです。
    
    date 04292006144100 JST
    
    
  6. ネットワークに接続できない
    ファイアーウォールの設定あるいはウィルス対策ソフトでガチガチにしている場合。
    
    または、ウィルス、スパイウェアに感染している場合などにネットワークに接続できなかったりしますので、これをチェックしてください。
      
    
  7. ipv6 install ができない
    C:\TINISDK\src>ipv6 install
    Installing...
    Failed to complete the action.
    Error 0x800704b8
    
    
    というエラーが出て何もできない。
    
    これは、windowsのOSの中のデータベースに関する部分が何らかの理由で破壊された時に出るようです。
    
    これに対処するには、修復するかwindows自体の再インストールが必要になります。
    
    修復する方法:
    
    これは危険なコマンドなので、下手をするとwindowsが起動しなくなる場合もありますので、必要なデータなどはバックアップしておきましょう。
    
    esentutl /p C:\WINDOWS\security\Database\secedit.sdb
    
    
    これを実行すると以下のようになります。これは成功例です。
    
    Microsoft(R) Windows(TM) Database Utilities
    Version 5.1
    Copyright (C) Microsoft Corporation. All Rights Reserved.
    
    Initiating REPAIR mode...
            Database: C:\WINDOWS\security\Database\secedit.sdb
      Temp. Database: TEMPREPAIR3412.EDB
    
    Checking database integrity.
    
    The database is not up-to-date. This operation may find that
    this database is corrupt because data from the log files has
    yet to be placed in the database.
    
    To ensure the database is up-to-date please use the 'Recovery' operation.
    
    
                         Scanning Status (% complete)
    
              0    10   20   30   40   50   60   70   80   90  100
              |----|----|----|----|----|----|----|----|----|----|
              ...................................................
    
    
    Integrity check successful.
    
    Note:
      It is recommended that you immediately perform a full backup
      of this database. If you restore a backup made before the
      repair, the database will be rolled back to the state
      it was in at the time of that backup.
    
    Operation completed successfully in 12.428 seconds.
    
    
  8. お約束
    ひとつのプログラムは基本的に一つのフォルダで管理する。関連するプログラムだから同じフォルダに入れることはしないこと。(現実的には可能だが、そのようにするbuild.batを正しく書く自信のある方のみ) 
    ひとつのプログラムに複数のクラス、従って複数のファイルがある場合はmainメソッドが複数あってはいけない。実行に必要なひとつのみである。
    
    
  9. コマンドラインの約束事
    build.batはバッチファイルで、いちいち手で入力していたら間違えてしまうほど多量のコマンドが必要になったときに用います。従ってバッチファイルはwindowsの(正確に言ったらMS-DOSの)シェルであるコマンドプロンプトへのコマンドの羅列です。つまり、バッチファイルの中味はコマンドラインで書くのと同じ規則で書かなければいけません、
    
    windowsのコマンドには一貫性が無いのが問題ですが、大体はあります。
    
    しかし、ここでの引数の約束はwindowsではなくて、javacあるいはjavaのコマンドの約束となります。
    
    以下のコマンドはjavacあるいはjavaの意味で、-設定名1は例えば-classpathです。
    
    コマンド -設定名1 設定データ1 -設定名2 設定データ2;設定データ3;設定データ4 -設定名3
    
    のようになります。
    
    つまり設定データ5を後ろに付け加えたければ、セミコロンで区切りそのデータを後ろに付けます。
    
    コマンド -設定名1 設定データ1 -設定名2 設定データ2;設定データ3;設定データ4;設定データ5 -設定名3
    
    
  10. NoClassDefFoundError
    これはjavaのプログラムを実行しようとしたが、そんなプログラムは見つからなかったという意味です。
    
    従って、classpathが正しく設定されていない場合に起こります。
    
    java prog
    
    とコマンドを実行するというのはclasspathの中にprog.classが無ければいけません。ほとんどの場合、
    
    javac prog.javaを行い、その後java progと実行する訳であるが、忘れがちなのはカレントディレクトリをclasspathに入れていないことです。
    
    auto.batの中で
    
    set classpath=なにがし
    
    の「なにがし」の中にカレントディレクトリ、つまり「.」ドット一つが入っていない場合です。
    
    多くの場合この設定が抜けているためにこのエラーが出ます。
    
    つまり、
    
    set classpath=.;なにがし
    
    となります。
    
    普通の場合は上記の原因ですが、これを出したのはwindows側での実行のはずです。
    
    そして、tini用のコンパイル用のbuild.batを用いてコンパイルしたとすれば、
    
    動かなくて当然です。
    
    ですから、windows用に普通にコンパイルすれば動作します。
    
  11. ftpでエラーになる
    色々な原因が考えられますが、ファイアウォールの設定を無効にすると動作することもあります。無効は危険なので、この講義のときだけ無効にするようにしてください。