| Java・iアプリ作成時の注意点 血と汗と涙の奮闘記録 ※2006年以降の情報 |
| 件名 |
トラブル状況 |
対処方法 |
| Java・iアプリ開発環境 |
| Java統合開発環境 |
Java統合開発環境は、何が良い? |
Java統合開発環境は、最近、Eclipseが主流のようです。
※NTTドコモ「iαppli Development Kitユーザーズガイド」においても、「Sun
ONE Studio4」と「Eclipse」の両方について説明が成されています。 |
| Eclipseの入手 |
Eclipseの入手先 |
Eclipseの本体:eclipse-SDK-3.1.2-win32.zip
http://www.eclipse.org/downloads/
Eclipseの言語パック:NLpack1-eclipse-SDK-3.1.1a-win32.zip
http://download.eclipse.org/eclipse/downloads/
※Eclipseの動作には、Javaの実行環境(JRE)または開発環境(Java2 SDK)が必要
実行環境(JRE):http://java.com/ja/
開発環境(Java2 SDK):http://java.sun.com/j2se/1.4.2/download.html |
Eclipseの
インストール |
Eclipseのインストール手順 |
インストールというよりも、解凍するだけです。
1.Eclipseの本体:eclipse-SDK-3.1.2-win32.zipを解凍
※eclipseというフォルダが作成される
2.Eclipseの言語パック:NLpack1-eclipse-SDK-3.1.1a-win32.zipを解凍
※eclipseというフォルダが作成される
3.Eclipseの本体の"eclipse"フォルダに、Eclipseの言語パックの"eclipse"フォルダを上書きすれば完了
4."eclipse"フォルダの中の"eclipse.exe"を起動して下さい。
|
Eclipseの
JDKの選択 |
パソコンの中に複数のバージョンの
JREまたはJDKが存在する場合
例:JDK1.3→JDK1.4に変更したい場合 |
Eclipseが使用するJREまたはJDKは、初期起動時に、Eclipseが勝手に認識しているようです。この設定を、後で変更できます。
<バージョン変更手順>
1.Eclipseの[ウィンドウ]メニューの[設定]をクリック
※[設定]ダイアログボックスが表示されます
2.左側の一覧の[Java]→[インストール済みのJRE]をクリック
※ここで、JREの追加、編集、除去を行えます。
※追加は、検索ボタンで行うと簡単です。
※チェックされたJREが、デフォルトで、Javaプログラムのビルドおよび実行に使用されます。
3.左側の一覧の[Java]→[コンパイラー]で、コンパイラー準拠レベルを設定できます。
<補足>
Eclipseを使用するだけならば、JREがあれば、JDKはなくても良いようです。ここで設定すれば、環境変数PATHの設定も要らないようです。
但し、DoJaエミュレータと連携させる場合は、PATHの設定が必要。 |
Eclipseと
DoJaエミュレータ
でソースを共有 |
EclipseとDoJaエミュレータで
ソースを共有したい |
最初に、DoJaエミュレータでプロジェクト新規作成を行う。
この後、Eclipseのプロジェクトの作成において、
「プロジェクトの内容」の「デフォルトの使用」のチェックを外し、既にDoJaエミュレータで作成したプロジェクトを「ディレクトリー」で指定する。 |
プログラム
作成手順 |
プログラム作成手順 |
Eclipse プログラム作成手順 |
| Java・iアプリのコンパイル |
| 特殊文字の使用 |
文字列リテラル中の文字として、
二重引用符文字"を使うには? |
エスケープシーケンス\を使います。
例: System.out.println("\"");
※下記サイトにエスケープシーケンスについての説明がありました。
たけおばの門:エスケープシーケンス |
| 文字列操作 |
Perl言語で行える文字列操作を、
Javaで行いたい |
JDK1.4から、正規表現のクラスが使えるようになりました。
パッケージ:java.util.regex
※文字シーケンスを正規表現に指定されたパターンとマッチするためのクラスです。
※下記サイトにサンプルプログラムがありました。
プログラマのお仕事メモ:Javaの小技メモ
※注意:iアプリでは使えないようです。2006/6/30 |
テキストの
編集可能・不可 |
テキストの編集を禁止させたい
※カーソルは移動するが、
編集できない状態 |
テキストの編集可能: setEditable(true)
テキストの編集不可: setEditable(false)
※テキストフィールドに対して使用 |
テキストの
有効・無効 |
テキストへの操作を禁止させたい ※カーソルの移動も行えない状態 |
コンポーネントを有効(ユーザ操作可能な状態): setEnabled(true)
コンポーネントを無効(ユーザ操作不能な状態): setEnabled(false)
※パネルに対して使用
※テキストフィールドに対して使用すると、灰色になるようです。 |
Javaクラス名の
先頭は大文字 |
Eclipseで新規にJavaクラス作成時、
新規クラス設定ウィンドウにおいて、
クラス名の先頭に小文字を入力すると
「型名は推奨されません。規則により、
通常Java型名は、大文字で始まります」
と警告表示される。 |
Javaクラス名の先頭は大文字
Java初心者歴10年、「こんな基本的なことも知らなかったのか」と、自分の知識不足を痛感しました。
私が、今までにサンプル公開してきたJavaアプリのクラス名は、全て小文字で始まっていました。
私のサンプルを参考にされた方、たいへん申し訳ありませんでした。m(_o_)m |
staticにアクセス SOFT_KEY_1 |
Eclipseで既存のソースを開くと
「staticフィールドFrame.SOFT_KEY_1
には、staticにアクセスする必要が
あります」と警告表示される。 |
警告表示:「staticフィールドFrame.SOFT_KEY_1には、staticにアクセスする必要があります」
誤:w_canvas.setSoftLabel(w_canvas.SOFT_KEY_1,"終了");
正:w_canvas.setSoftLabel(Frame.SOFT_KEY_1,"終了"); |
staticにアクセス getColorOfName |
Eclipseで既存のソースを開くと
「型Graphicからのstaticメソッド
getColorOfName(int)には、
staticにアクセスしてください」
と警告表示される。 |
警告表示: 「型GraphicからのstaticメソッドgetColorOfName(int)には、staticにアクセスしてください」
誤:g.setColor(g.getColorOfName(Graphics.AQUA));
正:g.setColor(Graphics.getColorOfName(Graphics.AQUA)); |
| 円を描く |
DoJaにGraphicsクラスのfillOvalメソッド
(楕円を塗りつぶすメソッド)が無い。 |
DoJa-3.0から、GraphicsクラスのfillArcメソッドで、円を描けるようになった。
fillArc(int x, int y, int width, int height, int startAngle,
int arcAngle)
fillArcメソッドは、弧を塗りつぶすメソッドで、arcAngleを360にすると楕円になる。 |
| Java・iアプリの実行 |
| 画像受信 |
Windowsサーバからの画像受信で
画像が壊れる。
16進でX'0a'がX'0d0a'に変換されていた |
Windowsサーバに設置したCGIと通信する場合、
CGIでprint文により出力すると、\nが\r\nに自動変換されます。
自動変換したくない場合、
binmode(STDOUT);でバイナリモードにして、print出力します。 |
待受設定時の
通信エラー |
Windowsサーバにiアプリを設置時、
待受画面設定を「する」で起動すると
CGIと通信できない。
|
Windowsサーバにiアプリを設置時、待受画面設定を「する」で起動すると、CGIと通信できない。
java.lang.SecurityException: Operation not permitted by a user
・UNIXサーバにiアプリを設置時は、正常に通信できる。
・Windowsサーバでも、待受画面設定を「しない」で起動すると、正常に通信できる。
<対応>
携帯側で、待受画面に設定する場合、「待受画面通信」も「通信する」に設定 |
| 携帯以外からのアクセス禁止 |
携帯向けサイトへのパソコンからの
アクセスを禁止したい。 |
UNIX系サーバでは、".htaccess"ファイルを使います。
iモードサーバ以外からのアクセスを禁止したい場合の例: Order Deny,Allow
Deny from all
Allow from 210.153.84.0/24
Allow from 210.136.161.0/24
Allow from 210.153.86.0/24
参考:iモードセンタの各種情報
但し、FTPソフトによっては、いきなり".htaccess"というファイルを転送できないので、"htaccess.txt"というファイル名称で転送後、".htaccess"に名称変更します。
※名称変更すると見えなくなります。↓ |
| .htaccessファイルが見えない |
不正なアクセスを禁止する場合に、
".htaccess"ファイルを使うのですが、
FTPソフトでサーバに転送後、
確認すると、転送したはずですが
見当たりません。 |
FTPソフトが、セキュリティーのため、"."で始まるファイル名を表示しないようになっている。
<対応>
FTPソフトの設定を変更。
FFFTPの場合:
・FFFTP起動時の画面で、
ホスト一覧 → 設定変更 → 高度 → LISTコマンドでファイル一覧を取得(L)のチェツクを外す。
・FFFTP起動後の画面で、
表示→ .で始まるファイルを表示(D)にチェックを入れる。 |
動画(iモーション)
PCで再生 |
撮影した動画(iモーション)を、
パソコンに送信して、再生したい |
サーバ側に送信した動画(iモーション)は、
拡張子.3gpを指定しておくと、「Quick Time」で再生できます。 |
カメラ画像保存後
再表示でエラー |
カメラ画像保存後、再表示の再に、
「ソフトに継続動作できない障害が
発生しました」とエラー表示される。 |
N900iでは、正常に動作していたのですが、P901iTVで使用すると、エラー表示されます。
N900iでは、画像サイズ:176×144ドットで、10Kbyte以内に納まっていたので、ScratchPadを10Kbyte単位で区切って使っていたのですが、P901iTVでは、同じ画像サイズで、14Kbyteでした。プログラムを修正して、ScratchPadを大きく取る必要があるようです。
でも、新しい機種が出る度に、カメラ画像サイズも大きくなるので、カメラ画像をScratchPadに保存するアプリは、機種依存の高いアプリになりそうです。 |
movaで
画像送信エラー |
movaで画像送受信時にエラーになる
ことが多い。 |
iアプリでHTTP通信を行う際の通信容量
505iシリーズ:送信10Kbyte、受信20Kbyte
900iシリーズ:送信80Kbyte、受信150Kbyte
最近のカメラは、高解像度なので、同じサイズでも、容量が大きく、
176×144のサイズでも、10Kbyteを超えることが多いようです。
505iシリーズで、「送信10Kbyte」ということは、
画像の送信は、無理のようです。
700iのiアプリの仕様は、506iと同等レベルと言われています。
700iシリーズでも、画像の送信は、無理かもしれません。 |
携帯の動画をPC
で見たい
※iアプリとは
無関係 |
携帯で撮った動画を、PCにコピーして
Media Playerで再生しようとすると
エラー表示される |
携帯で撮った動画を、PCにコピーすると、拡張子.ASFが付いていました。
iアプリで、サーバに送信する場合は、拡張子.3gpなのですが不思議です。
とりあえず、インターネットで調べてみると、下記の説明がありました。
ASF形式の動画が再生できない場合 |
| 2回目の動画表示の際にエラー |
VisualPresenterで
2回目の動画表示の際にエラー |
エラーメッセージ:com.nttdocomo.ui.VisualPresenter: Media image can't be set while
playing
VisualPresenterの"stop();"だけでは、ダメで、
MediaImageの"unuse();"を行うと正常になりました。 |