English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية 
J2ME软件开发的手机
(2002)
Colin Fahey
moto_t720_open_lightanddark02.jpg
Motorola T720手机,表明开放

1. 警告

这份文件是过时了!  本文件中的资讯可能已经有效和有用的一年2002 ,但许多事情已经改变在随后几年!  这份文件现在应该只被看作是一个有趣的历史记录,今年2002 。  不依赖于任何资料或意见,这份文件。  所有的技术资料在本文件是非常过时了。 

下载自创建软件,自我创造形象,自我创造的电话警告的旋律(即“,”铃声) ,是比较少见和困难的一年2002 。  可悲的是, 6年后,一些移动电话服务供应商(包括Apple ,它提供的专有软件和“铃声”门户iPhone )仍实行限制下载软件,图像和音乐,因为手机服务供应商享有非常大的金融利润通过控制这些类型的下载。 

幸运的是,移动电话,如采用“Android”软件平台,将永远终止的能力,企业创建和利用封闭的市场,例如使用手机。  虽然消费者愿意购买移动电话服务计划,其中包括非常高的费用,下载软件,图像和音乐,这是因为数量有限,手机服务可供选择。 

经济动态,使某些公司将增长到占主导地位的市场不应该被解释为隐强有力的批准消费者。  随着企业开始主宰,然后使它很难或不可能的竞争者进入市场,占主导地位的公司可以提供产品,结合了多项高的积极价值(例如,沟通能力从任何地方)高负值(例如,高价格为理想的软件,图像和音乐, 所有这些都将成为免费提供的 ,因此,增加服务的负面价值) 。  没有强迫消费者购买移动电话,但毫无疑问的是,占主导地位的移动电话服务供应商已逐渐创造了条件,不能被视为“一个”自由市场。  因此,手机服务市场已经“经济”效率低下,并已负担转嫁到消费者。 

我们希望,要求手机服务无线电频率可竞争性服务将恢复正常市场价值的数据转让,这种移动电话服务供应商再次降低到仅仅是运营商的数据(即只提供带宽) ,而不是信息或娱乐供应商! 

商业运输数据必须分开出售的数据,否则将有奖励的数据运输业务,以阻止竞争对手的销售数据通过同样的数据运输渠道。 

视频游戏机市场遭受了同样的问题。  制造商的视频游戏机硬件业务的创建设备,可以显示视频游戏,但这些公司同时还拥有专属的控制转移到这些软件的视频游戏机。  因此,激励游戏机制造商能够阻止竞争对手销售软件的视频游戏机。  如果游戏机硬件制造商集中在设计和制造的硬件,可以出售获利(而不是在一个重大的损失,与X-Box和PlayStation和Nintendo视频游戏机) ,然后在视频游戏市场将继续繁荣,并质量最好的视频游戏将显着提高,成本的视频游戏将会崩溃。 

2. 主题索引

(1)
J2ME开发工具
(2)
简易程序J2ME
(3)
复杂J2ME计划
(4)
Sun “无线工具包”
(5)
提供软件的一个因特网网址
(6)
下载软件从一个因特网网址
(7)
下载的错误信息和安装错误讯息
(8)
创造,提供,下载“铃声”
(9)
创建,提供和下载图片
(10)
AT&T手机设定(网络)
(11)
与其他手机资源
(12)
J2ME与BREW

3. J2ME开发工具

本节介绍如何下载的开发工具,可以用来编译J2ME源代码级的文件适用于移动设备。  请注意, Sun “J2ME Wireless Toolkit” ,讨论了在以后的一节的规定,需要下载Java SDK本节中介绍。 

3.1 JDK 1.4 (或更新)

这意味着您需要的常规Java 2 SDK从Sun 。  我下载并使用版本1.4通过以下链接:
http://java.sun.com/j2se/1.4/download.html
以下是下载网页看起来是这样的:
java2sdk_download_page.jpg
启动安装程序。  安装到默认位置( c:\j2sdk1.4.0_03 )除非你是能够解决的道路可能出现的问题。 

3.2 Connected Limited Device Configuration (CLDC)

我不会假装知道这是什么,但我只是下载了它从Sun网站。
http://wwws.sun.com/software/communitysource/j2me/cldc/download.html
以下是主要的CLDC下载网页看起来是这样的:
cldc_download_page.jpg
只有1.0.3可在当时,我访问。
为了下载这个,我需要注册Sun网站。  我创建下列资料:
Username:        anon***anon
Password:        nospamplease
Favorite color:  blue
Full name:       Prof. Anon Nospamplease
我下载以下文件:
j2me_cldc-1_0_3-fcs-src-b17-winunix-14_sep_2001.zip
余解压缩到以下目录:
C:\j2me
本人改名为“cldc-1_0_3-fcs”目录简单:
cldc (即完整的路径是c:\j2me\cldc )

3.3 Mobile Information Device Profile (MIDP)

我不会假装知道这是什么,或者,但我只是下载了它从Sun网站。
http://java.sun.com/products/midp/
以下是主要的MIDP下载网页看起来是这样的:
midp_download_page.jpg
我下载以下文件:
j2me_midp-1_0_3-fcs-src-b26-win-19_sep_2001.zip
余解压缩到以下目录:
C:\j2me
本人改名为“midp-1_0_3-fcs”目录简单:
midp (即完整的路径是c:\j2me\midp )

3.4 配置工具

3.4.1 建立路径

将下列语句添加到您的AUTOEXEC.BAT文件:
REM ---- Java Support ----
SET MIDP_HOME=C:\j2me\midp
SET PATH=%PATH%;c:\j2sdk1.4.0_03\BIN;
PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\j2sdk1.4.0_03\BIN;C:\j2me\midp\bin;%PATH%
然后,这些变数部队将重新运行批处理文件:
cmd_prompt_autoexec_bat.jpg
c:\>  autoexec.bat
您也可以建立这些相同的变数使用Windows环境变量控制面板。

请注意,我选择指定明确的目录路径,以我目前的版本的Java 2 SDK 。  因此,如果我升级,那么,我必须修改AUTOEXEC.BAT文件来指定新的目录。 

3.4.2 检查Jave 2 SDK双星

一旦上述设置生效,您应该能够运行的程序Java工具从命令提示符没有具体的完整路径工具程序。 

下面的命令将启动移动电话设备模拟器: 
cmd_prompt_midp.jpg
c:\>  midp
以下图片显示的移动电话设备模拟器: 
java_midp_launch.jpg

4. 简易程序J2ME

4.1 收件Java代码

使用任何文本编辑器,一个人可以通过输入代码,如本HelloMIDlet.java源代码文件:
file_image_hellomidlet_java.jpg
以下是代码以纯文本格式:
// File: HelloMIDlet.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class  HelloMIDlet
extends       MIDlet
implements    CommandListener
{
    private Command exitCommand;
    private Display display;
    private TextBox t = null;

    public HelloMIDlet()
    {
        display = Display.getDisplay( this );
        exitCommand = new Command( "Exit", Command.EXIT, 2 );
        t = new TextBox
        (
            "Hello MIDlet",
            "Test string",
            256, 0
        );
        t.addCommand( exitCommand );
        t.setCommandListener( this );
    }

    public void startApp()
    {
        display.setCurrent( t );
    }

    public void pauseApp()
    {
    }

    public void destroyApp( boolean unconditional )
    {
    }

    public void commandAction( Command c, Displayable s )
    {
        if (c == exitCommand)
        {
            destroyApp( false );
            notifyDestroyed();
        }
    }
}

4.2 编译*.java代码*.class

cd  c:\HelloMIDlet
注意:下面的命令必须在一条直线上,而是已扩大到数行文字,只为清晰。
(当前目录: C:\HelloMIDlet )
javac
    -target 1.1
    -d .\
    -bootclasspath c:\j2me\midp\classes
    HelloMIDlet.java
cmd_prompt_javac.jpg
注: “-target 1.1”是必要的,以避免错误在今后“preverify”阶段。  显然,这跟一个问题MIDP 1.0.3支持JDK 1.4 。 

4.3 Preverify产生新的*.class档案

cmd_prompt_preverify.jpg
(当前目录: C:\HelloMIDlet )
preverify  -classpath  c:\j2me\midp\classes;.  HelloMIDlet
这生成一个新的*.class文件中一个新的要求“output”子目录(默认情况下) 。

4.4 试验新的*.class档案

cmd_prompt_midp_midlet.jpg
(当前目录: C:\HelloMIDlet )
midp  -classpath  c:\j2me\midp\classes;.\output  HelloMIDlet
这将启动手机模拟器,这表明新“output”目录包含了一些必要的*.class文件。
以下图片显示预期的效果。
java_midp_hellomidlet.jpg

4.5 创建一个新的文本文件, “manifest.mf”和编辑文件

阿“manifest.mf”文件是必不可少的收到了实际的蜂窝电话来解释的内容*.jar文件。  如果一个适当的“manifest.mf”文件不包括在*.jar文件,然后手机可能会成功地下载*.jar文件,但可能会失败来解释下载的文件,可能是一个错误的报告,如“Unsupported Content Type” 。 
以下是一个例子,一个简单的“manifest.mf”文件。
file_image_manifest_mf.jpg
这是“manifest.mf”文件为纯文本: 
MIDlet-1: My_Description,, HelloMIDlet
MIDlet-Name: My_Midlet_Suite
MIDlet-Vendor: Colin Fahey, Inc.
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
请注意, CLDC和MIDP版本中指定该文件。  是非常谨慎和保守时,编辑各个领域中的该文件。  如果你“File Corrupt”错误,然后尝试取消所有领域,将不会显示在这个例子。  此外,把领域的秩序,在这种秩序中出现的例子。  此外,缩短各个领域的价值多达你可以,并保持字符仅限于简单的字母,数字,时间,和破折号。  一些移动电话服务,以及手机,都不会容忍更多的变化,外地订货和领域的内容。 
注意: 

当“jar”程序用来创建一个*.jar档案,档案的“manifest.mf”指定为manifest文件,该计划内容“jar” manifest文件,并可能增加更多的领域,因为它创建一个文件名为“MANIFEST.MF”内输出*.jar文件。  因此,如果“MANIFEST.MF”文件提取*.jar文件,然后比较原始“manifest.mf”指定的档案在建立*.jar ,这两个文件可能有所不同,与“MANIFEST.MF”文件,其中包含了更加广泛的领域内比原来的“manifest.mf”档案。 

不要提取“MANIFEST.MF”文件从*.jar文件,并试图形成一个新的*.jar使用该文件manifest文件。  如果您提取“MANIFEST.MF”文件从*.jar文件,然后可以肯定,以消除所有领域除外范例中所示“manifest.mf”文件所示。 
请注意:

图标的程序显然不会出现在Motorola T720电话。  这就是为什么我没有描述我的midlet的一个图标。  不过,以下显示了如何设置一个图标的计划内的manifest文件: 

MIDlet-1: My_Description, /icon.png, HelloMIDlet 

当发展中国家的手机是这样显示图标的应用程序,指定该图标的文件名,并添加图标的图像文件本身的*.jar指定档案的档案名称之间的文件名的文件被添加到*.jar文件。 

4.6 把“manifest.mf”档案和档案*.class一个*.jar档案

下面的命令创建一个*.jar文件。  该*.jar文件将包含指定manifest.mf档案,将包含*.class档案中找到指定的目录。
cmd_prompt_jar.jpg
当前目录: C:\HelloMIDlet
jar  cfm  hi.jar  manifest.mf  -C .\output  HelloMIDlet.class
复杂的假设的例子建立一个*.jar档案
假设一个图标的图像文件(例如, “icon.png” )是出现在*.jar档案“/icon.png” 。  (注:程序的图标没有出现在Motorola T720手机,但不要出现在其他的手机类型,并显示在MIDP模拟器。 ) 

假设有一个目录名为“images”与图片文件( *.png格式) 。  假设这个目录中,所有的图片目录中,应该利用计划的Java的相对目录/images (例如,一个形象“a.png”将可利用的道路“/images/a.png” ) 。 

假设所有的档案*.class所产生的preverify命令中包含一个目录命名“verified” 。  例如,验证版本的主要阶级, “MyApp.class” ,将在“verified”文件夹,连同其他类别的程序。  所有这些课程是可在根目录*.jar文件。 

下面的命令将创建一个*.jar档案,实现了各项目标指明的前几段。  注意:该命令已扩大到数行文字,在这里只为清晰。  当进入命令在命令提示符,命令不得包含换行符,否则将命令解释解释输入文字作为多个独立的命令。 

jar
    cfmv             [Create JAR, Specify JAR Name, Add manifest.mf, Verbose]
    MyApp.jar        [Name of output JAR file]
    manifest.mf      [The manifest.mf file]
    icon.png         [Optional icon, specified by JAD as "/icon.png"]
    images           [Directory to add to JAR as "/images"]
    -C .\verified .
最后一部分的命令是很难理解。  它具有以下含义:  “改变当前工作目录.\verified ,然后把所有*.class档案中发现的相对目录'.' (即所有*.class文件的当前工作目录)中的*.jar文件。”  由于目录已经改变之前,具体的路径班将在*.jar文件,当地的道路将不会出现在相对路径的文件时,放置在向*.jar文件。 

例如,假设的验证班是在下列目录: 

C:\MyApp\verified 

假设有一流的文件,如如下: 

C:\MyApp\verified\w.class 

具体“-C .\verified .”然后在命令创建*.jar文件,从当前目录“C:\MyApp” ,将导致“w.class”正在建立的根目录*.jar文件。 “ /电子”

警告:当“-C”选项是指定的,它改变了当前的工作目录在这一点处理的整体序列的命令参数jar命令。  因此, jar命令可能会抱怨说,它无法找到其他文件中提到的命令参数超出“-C”选择。  如果发生这种情况,只需将要“-C .\verified .”最后参数的全面指挥。 

以下显示详细输出的jar命令。 
added manifest
adding: icon.png(in = 449) (out= 454)(deflated -1%)
adding: images/(in = 0) (out= 0)(stored 0%)
adding: images/a.png(in = 2463) (out= 2223)(deflated 9%)
adding: images/b.png(in = 1322) (out= 579)(deflated 56%)
adding: images/c.png(in = 3433) (out= 2874)(deflated 16%)
adding: images/d.png(in = 1524) (out= 801)(deflated 47%)
adding: w.class(in = 2570) (out= 1356)(deflated 47%)
adding: MyApplication.class(in = 4714) (out= 2169)(deflated 53%)
adding: x.class(in = 3239) (out= 1429)(deflated 55%)
adding: y.class(in = 14205) (out= 6481)(deflated 54%)
adding: z.class(in = 9448) (out= 5135)(deflated 45%)

4.7 创建并编辑一个新的*.jad档案

阿*.jad文件是必要的,使手机能够描述计算机程序的人面前的人决定将下载该程序。  该*.jad文件还提供了一些间接从*.jar本身。 
file_image_hi_jad.jpg
例如*.jad文件,描述文件*.jar
这里是例子hi.jad文件以纯文本格式:
MIDlet-1: My_Description,, HelloMIDlet
MIDlet-Jar-Size: 1283
MIDlet-Jar-URL: http://www.colinfahey.com/hi.jar
MIDlet-Name: My_Midlet_Suite
MIDlet-Vendor: Colin Fahey, Inc.
MIDlet-Version: 1.0
有程式可以产生*.jad文件,这使得它更容易更新“MIDlet-Jar-Size:”外地每次*.jar档案变更(和其大小变化) 。  如果你搜索互联网你会发现有用的J2ME程序。 

如果外地的大小不指定确切的字节总数的*.jar文件,然后下面的错误后,可能会出现一个成功的下载到手机: “Download Failed” (下载失败) 。 

对于Motorola T720手机,下面的错误信息可能被用来inidcate无效的领域中*.jad文件,或可能无效的领域中产生的MANIFEST.MF档案内的*.jar档案: “Failed: File Corrupt” (失败:文件损坏) 。 
注意:如果*.jar文件在同一目录中的相应文件*.jad互联网上的Web服务器,然后*.jad文件可以简单地显示的文件名*.jar文件,没有具体的完整URL ,如下面的例子: 

MIDlet-Jar-URL: hi.jar 

当下载这些文件从Apache互联网服务器的Motorola T720蜂窝电话,接受它不包括充分URL 。  然而,当这些文件下载从Yahoo!互联网服务器的Motorola T720手机,企图下载将会失败,除非有充分URL路径*.jar文件指定范围内*.jad文件,如下面的例子: 

MIDlet-Jar-URL: http://www.colinfahey.com/hi.jar 

我不知道的原因,这个问题,我知道,这个问题不会影响到其他手机(或移动电话服务供应商) 。  在指定的充分URL的*.jar档案内的*.jad文件显然是不方便的,因为移动的文件不同地点的服务器上需要改变的信息在所有*.jad文件。  然而,具体的充分URL可能使*.jad更可靠的某些手机和某些手机服务提供商。 

4.8 测试*.jar文件和*.jad文件执行程序

下面执行的类别中找到*.jar文件,描述的*.jad文件。 
cmd_prompt_midp_jar_jad.jpg
(当前目录: C:\HelloMIDlet )
midp  -classpath c:\j2me\midp\classes;.\hi.jar  -descriptor hi.jad

4.9 参考J2ME , MIDP , CLDC发展

大部分是我在这里可以找到许多其他互联网站点。  然而,我纠正一些错误上找到其他因特网网站,并补充说失踪的细节,并介绍了完整的经验,有人试图做到这一点的东西。  这里有非常丰富的连结,帮我开始使用: 
http://wireless.java.sun.com/midp/articles/getstart
http://wireless.java.sun.com/midp/articles/setup

5. 复杂J2ME计划

5.1 导言

简单的程序提出了在上一节本文件只有一个单一的源代码文件,该计划并不几乎没有,因此没有一个很好的例子,移动电话编程。 

我的朋友Sam Robertson写一个有趣的J2ME计划,教导一个人发挥卡片游戏“Blackjack” (也称为“21” ) 。  一名球员是提出一个“交易卡,”播放器的双卡,球员必须决定要怎么做: “留下来,击中,”双击“关闭,或者分裂。” 

这项计划有6个源代码文件。  该项目响应用户输入,并没有简单的图画和文字的更新。 
sbj_screen_on_phone.jpg

5.2 源代码

请点击以下链接获得的源代码,并*.jad档案, “manifest.mf”文件,一个批处理文件,所有在一个方便ZIP文件。
sbj.zip
源代码包含在ZIP档案
6090 字节
MD5: bf3922035b7a4eef24e107d03b7524c9
解压缩到任意目录,但如果你解压缩到“c:\”下Windows ,下面的例子将讨论更接近您的实际情况。
sbj_directory_files.jpg
提取sbj.zip以“c:\”创建目录“c:\sbj”

5.3 manifest文件

档案: “manifest.mf” :
MIDlet-1: My_Description,, SBJ_MidletT
MIDlet-Name: SBJ_MidletT
MIDlet-Vendor: Sam Robertson
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0

5.4 该批处理文件,以建立程序

下面的批处理文件是粗糙,但它作为一个例子你可能会开始编写自己的批处理文件来建立您的J2ME计划。  这个例子并不批处理文件如下:
(1)删除目录含旧*.class档案; 
(2)删除目录含旧核实 *.class档案; 
(3)制作“班”输出目录; 
(4)编译所有源*.java在*.class文件,输出去“上课”目录。 
(5)请“核实”输出目录; 
(6) Preverify所有类别的“类别”目录,并提出核实课程“核实”目录。 
(7)创建一个*.jar文件,并添加mainfest文件,所有类别的“验证”目录; 
*(8)试验计划通过事先班直接; 
*(9)试验计划通过*.jar和*.jad档案; 

(*...这些步骤是残疾人(按评论)在我的批处理文件。 ) 
sbj_build_sbj_bat_file.jpg
批处理文件“build_sbj.bat”建设计划
这是相同的档案(“build_sbj.bat”)纯文本格式:
rmdir /S /Q classes
rmdir /S /Q verified
del /F /Q  *.jar

mkdir classes

javac  -g:none  -target 1.1  -d .\classes  -bootclasspath c:\j2me\midp\classes  *.java

mkdir verified

preverify  -classpath c:\j2me\midp\classes;.\classes  -d .\verified  .\classes

jar  cvfm sbj. jar manifest.mf  -C  .\verified  .

REM  midp  -classpath c:\j2me\midp\classes;.\verified  SBJ_MidletT
REM  midp  -classpath c:\j2me\midp\classes;.\sbj.jar  -descriptor sbj.jad
REM  Finished

5.5 大厦从命令提示符

这是由于运行“build_sbj.bat”批处理文件的命令行:
sbj_build_command_prompt.jpg
“build_sbj.bat”执行批处理文件
请注意,预警信息的“rmdir”和“del”行动只是表明没有任何东西可以删除。 

你可以看到新的目录(即“classes”和“verified” )和新的*.jar文件,导致运行的批处理文件:
sbj_new_files_after_build.jpg
源代码文件和新生成的文件

5.6 *.jad档案

要部署sbj.jar文件,我们需要创建和编辑文件的sbj.jad有正确的*.jar规模在适当的领域:
档案: sbj.jad
MIDlet-1: SBJ_MidletT, , SBJ_MidletT
MIDlet-Jar-Size: 7257
MIDlet-Jar-URL: sbj.jar
MIDlet-Name: Sam Blackjack Trainer
MIDlet-Vendor: Sam Robertson
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
一个人可能需要增加完整的URL的*.jar文件时*.jad档案放在一个因特网网址-但我发现(通过实验) ,我是能够避免提及充分X AZE(即,我只指定了*.jar档案名称本身) 。  然而,把在完成URL ,但我想让你知道我的观察。

5.7 综述

在多个源文件在您的项目是共同的,在本节中,我们发表了原油的例子建设多种类别,其次是包装和执行。 

请参阅下面一节关于使用Sun Wireless Toolkit ,这使得构建应用程序容易得多。 

6. Sun “Wireless Toolkit (version 1.0.4_01)”

6.1 导言

Sun提供了一个方便的开发环境,用于建设和包装J2ME程序: “Java 2 Platform Micro Edition (J2ME) Wireless Toolkit (version 1.0.4_01)” 。 

(注意:您需要下载Java 2 SDK 1.4中所描述早期部分使用此工具包。不要现在如果你不已经有这个版本的Java 2 SDK 。 ) 

转到下面的Internet网站下载该工具包: 

http://java.sun.com/products/j2mewtoolkit/ 
注意!
 

点击链接“2.0 Beta 1 English” (目前顶端的下载选项)如果你正在做Motorola T720发展-因为这个版本有一些X AZD东西,回避这可能是一个头痛。 
j2me_wireless_toolkit_2_0_download_page.jpg
不要下载这个版本! ( “2.0 Beta 1 English” )
我尝试这个版本,我终于汇编代码,有很多混乱的设置变化,但毕竟努力,我得到安全例外当我试图执行。  请勿打扰! 
下载“1.0.4_01 English”版本。  以下是下载网页看起来是这样的: 
j2me_wireless_toolkit_1_0_4_01_download_page.jpg
该Sun J2ME Wireless Toolkit (version 1.0.4_01)下载页面
j2me_wireless_toolkit_1_0_4_01_download_page2.jpg
Sun J2ME Wireless Toolkit (version 1.0.4_01) FTP的网站清单
这将下载以下文件: “j2me_wireless_toolkit-1_0_4_01-bin-win.exe” 
执行此程序安装在您的系统。

6.2 J2ME Wireless Toolkit :发射工具栏

之后,安装工具,您可以启动它从“Start” (开始)菜单系统:
j2me_wireless_toolkit_1_0_4_ktoolbar.jpg
从程序的工具栏
您还可以MIDP-1.0文件通过“Documentation”项目在此Start (开始)菜单。
j2me_wireless_toolkit_2_0_wtk20_docs_api_index_html.jpg
J2ME Wireless Toolkit (version 1.0.4_01)文件

6.3 J2ME Wireless Toolkit :创建项目和建设

j2me_wireless_toolkit_1_4_ktoolbar_window.jpg
该工具已准备就绪。  按一下“New Project...”创建一个新的项目。
j2me_wireless_toolkit_1_4_ktoolbar_new_project.jpg
New Project :输入项目名称(成为JAR的姓名和名称的新项目目录) ,并输入MIDlet类别名称(类来自MIDlet ,基本上主要的阶级对您的申请) 。 
j2me_wireless_toolkit_1_4_ktoolbar_project_created.jpg
工具栏:项目的创建。  请注意,控制台告诉你在哪里把你的*.java源文件,等等  (例如, “c:\WTK104\apps\sbj\src”等) 
j2me_wireless_toolkit_1_4_ktoolbar_project_settings.jpg
“Settings...”点击工具栏上获得这个项目的设置菜单。 
无视“MIDlet-Jar-Size”领域(价值“100”字节)现在。  我们将最终导致了正确的价值得到确定。 
j2me_wireless_toolkit_1_4_ktoolbar_project_midlet_settings.jpg
按一下MIDlets标签的项目设置对话框。
按一下只排在表( “MIDlet-1” )突出并选中它。  然后按一下“Edit”按钮。 
j2me_wireless_toolkit_1_4_ktoolbar_project_no_icon.jpg
清除“Icon”领域,如果您没有*.png文件将在您的*.jar文件。 
做到以下几点: 

(1) Project --> Clean :删除所有*.class档案;
(2) Build :打造*.class所有文件和preverifies ;
(3) Project --> Package --> Create Package :生产*.jar和*.jad
j2me_wireless_toolkit_1_4_ktoolbar_clean_build_create_package.jpg
结果建设*.jar和*.jad
当你做这三个步骤,由此产生的*.jar和*.jad立即执行准备在当地模拟器,或立即部署在您的因特网网站供他人下载“空中” (OTA) 。  *.jar规模的外地在*.jad文件将是正确的。  不要忘记这样一步(3)每一个时间您重建! 

现在您可以测试击中“Run” (运行)按钮。 
j2me_wireless_toolkit_1_4_ktoolbar_project_launch.jpg
j2me_wireless_toolkit_1_4_ktoolbar_project_running.jpg
碰“Run”的项目内容中的*.jad的模拟器。  您可以选择的具体MIDlet发射(通常只有一个) 。 
仅复制*.jar和*.jad档案,从指定地点(报告的工具栏的控制台窗口在建设项目) ,例如:
(从控制台窗口: )
Wrote c:\WTK104\apps\sbj\bin\sbj.jar
Wrote c:\WTK104\apps\sbj\bin\sbj.jad
把这些文件直接到您的因特网网站,无需修改,它应该工作。  以下是我看到我的手机后,下载此编译应用“空中” (OTA)
sbj_screen_on_phone.jpg
Sam Robertson's Blackjack Trainer (sbj.jar)执行我的手机

7. 提供软件的一个因特网网址

7.1 确保互联网的网络服务器指定MIME类型*.jar档案和档案*.jad

如果您有Apache互联网的网络服务器,您需要创建一个文件名为“.htaccess”在您的网站根目录。  该“.htaccess”档案,您可以凌驾于Apache配置,如添加或压倒一切的档案MIME类型。  您必须添加指定MIME类型*.jar相应的文件和档案*.jad所示,下面的文本文件: 
htaccess_image.jpg
我国自订“.htaccess”档案Apache互联网服务器。  请注意:我命名此文件“.htaccess.txt”只是为了使文件易于修改时使用Windows作业系统。  档案名称必须改变,以“.htaccess”的文件之前,可以使用的Apache互联网服务器。 
这是我的简单.htaccess文件为纯文本:
AddType text/vnd.sun.j2me.app-descriptor jad
AddType application/java-archive jar
AddType text/vnd.wap.wml wml
显然,建立或修改此文件的结果立即改变Apache服务器的行为。  我猜Apache服务器检查修改日期和时间“.htaccess”文件时,每个新上任的交易,和服务器重新加载该文件,如果修改的日期和时间发生了变化。 

如果您有不同类型的互联网服务器,您必须确定如何指定MIME类型,你必须确保*.jar档案和档案*.jad分配适当的MIME类型。 

你就会知道,如果MIME类型尚未成立,如果手机拒绝下载您*.jad文件和报告以下错误: 

“406: Not Acceptable” 

7.2 或者提供链接到*.jad内HTML文件或文件WML

该Motorola T720 J2ME手机与AT&T服务能够下载*.jad档案直接输入URL的*.jad文件中的蜂窝电话。  这有可能为其他工作J2ME手机与其他手机服务提供商。 

然而,它可能会更加方便人们下载文件的*.jad选择一个链接HTML内的文件或在WML文件。  (注: WML现在已经过时。大多数手机现在可以解释HTML 。 ) 
file_image_hi_html.jpg
一个简单的HTML文件,链接到一个*.jad档案
file_image_hi_wml.jpg
一个简单的WML (WAP)网页,链接到一个*.jad档案  (注: WML现在已经过时。大多数手机现在可以解释HTML 。 ) 

8. 下载软件从一个因特网网址

下面的图像显示确切的行动顺序我没有下载并执行MIDlet开发和部署中所描述的前几节以上。  这些图像照片的画面,我的手机。 
t720_screens_download_program.jpg
(1)主画面:当您打开手机,你会看到主画面。新闻中心按钮到主菜单。 
(2) Main Menu :移动的项目“WebAccess” 。 
(3) WebAccess :移动的项目“Go To URL” 。 
(4) Enter URL :输入URL的*.jad文件(或HTML文件,或WML文件) 。 
(5) Details ;这一信息是从剖析*.jad文件。新闻DOWNLD下载*.jar文件。 
(6) Download Complete ;等待这个讯息消失; 
(7) Installing ;等待这个讯息消失; 
(8) xxxx bytes transferred ;等待这个讯息消失; 
(9) Installed ;等待这个讯息消失; 


当WebAccess菜单再次出现,该计划后,已安装,只需退出每个菜单返回到主屏幕。 
t720_screens_start_program.jpg
(1)主画面:当您打开手机,你会看到主画面。选择“Games & Apps”通过选择主菜单,或按向下的光标的主要画面。 
(2) Java Powered :等待此画面消失。 
(3) Games & Apps :选择了这个项目的名称您的计划! 
(4) Yay !成功执行你的计划! 
该项目出现在手机非常相似的外观的模拟器。

9. 下载的错误信息和安装错误讯息

9.1 Motorola T720 (J2ME)错误讯息

下面的错误信息只有相关的Motorola T720 (GSM/J2ME)手机。 

9.1.1 “Download Failed”

原因# 1
任何文件(HTML, JAD, JAR, MID, GIF)超过1644字节将导致此错误的某些互联网主机和服务器。  这是一个简短的清单,主机和服务器: 
Host / Server                                               Error
===================================================    =================
Apache                                                       No
Microsoft Personal Web Server (direct from your PC)          No
Earthlink (Apache)                                           No
Yahoo! (custom server)                                       Yes
这个问题是由于这个安全漏洞在Motorola T720 GSM/J2ME固件,从而导致下载文件中的碎片要失败的。
唯一明显的解决办法是开关互联网主机或服务器类型。  其他类型的手机没有这个问题。 
原因# 2
该“MIDlet-Jar-Size:”场*.jad文件没有说明确切的总字节的相应*.jar文件。

9.1.2 “Failed: File Corrupt”

原因# 1
该*.jar文件使用API职能是不能提供具体的蜂窝电话。 

例如, MIDP 2.0职能是不是可以在Motorola T720 GSM/J2ME蜂窝电话(其中只有MIDP 1.0职能) 。  一个程序可以执行一个模拟器,但可能无法执行的移动电话。 

解决的办法是寻找MIDP 2.0职能的源代码,并取代它们MIDP 1.0职能,或消除的特点,需要MIDP 2.0职能。 
原因# 2
“manifest.mf”档案的利用创造*.jar文件(通过“jar”实用)载有错误。 

请确保“manifest.mf”文件有下列版本的CLDC和MIDP : 
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
整个“manifest.mf”文件看起来应该几乎完全一样如下: 
MIDlet-1: My_Description,, HelloMIDlet
MIDlet-Name: My_Midlet_Suite
MIDlet-Vendor: Colin Fahey, Inc.
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
每一行文字, “manifest.mf”文件,其中包括最后一行的档案,应该结束了“carraige返回” (CR; 13; 0x0d)性质之后, “换行符” (LF; 10; 0x0a)性质。 

唯一领域的“manifest.mf”档案在你自己的版本的文件,应该不同于例如在这里显示的前三个领域中列出的例子。  最后三个领域应该是一个完全匹配的例子,最后两个字符的文件应该是“回车”和“换行”后的最后领域。 

以下是可能出现的问题在您的版本的“manifest.mf”文件: 
(1)您“manifest.mf”文件中包含的字符未ASCII字符; (看一张图表的ASCII字符;任何字符以外的0到127范围无效) ; 
(2)您“manifest.mf”文件不会有“换行符” (LF)每个字符后“回车” (CR)性质年底的每一行; 
(3)您“manifest.mf”文件已看不见空格或制表符结束时,每一行 (CR)(LF)行终止; 
(4)您“manifest.mf”文件包含一个“Manifest-Version:”线; 
(5)最后一行的“manifest.mf”文件不结束, (CR)(LF)行终止,而是简单地到达文件的末尾; 
(6)您“manifest.mf”文件并没有确切的领域和具体的字段顺序显示在上面的例子; 
(7)您CLDC版本并不完全相同1.0 ,或您MIDP版本并不完全相同1.0 ; 
(8)您的供应商名称字符不属于ASCII字符(例如,没有Unicode字符允许) ; 
(9)您“manifest.mf”文件不会有一个空间后,第二次在逗号“MIDlet-1:”线; 
也许有些案件上面列出实际上并不造成问题的许多手机,但消除所有的案件上面列出可能使下载成功。  下载后是成功的,你可以尝试不同的“manifest.mf”档案发现什么其他的事情你可以没有造成下载的错误。  当“manifest.mf”文件被修改,重要的是要确认下载的程序继续努力为所有目标蜂窝电话和移动电话服务供应商。  有些手机和服务的不够灵活一些。 

当“manifest.mf”文件添加到档案*.jar通过jar计划, jar程序创建一个新版本的manifest文件内*.jar文件。  生成的版本的manifest文件内*.jar文件名为“MANIFEST.MF” 。  该jar程序可能会增加对这一领域的文件中不存在“manifest.mf”文件所提供的程序员。  不要提取“MANIFEST.MF”文件从*.jar文件,除非你准备,以消除某些领域,使剩余的领域完全一样的例子“manifest.mf”文件所示。 

9.1.3 “Unsupported Content Type”

原因# 1
手机不能接受MIME类型报告的远程服务器上的特定文件。 

例如, JPG图像文件不支持Motorola T720 ,将导致此错误。

这个错误也可能发生,如果MIME类型支持的文件类型(例如, GIF , MID , JAD , JAR )不报告正确的服务器。  一个人必须非常小心,以报告的确切MIME类型支持的文件类型。 
原因# 2
文件缓存的移动电话本身需要被清除(例如, Browser Settings -> Clear Cache ) 。 

如果最近添加了MIME类型到一台远程服务器,然后尝试下载一个文件,以前没有安装由于不正确或遗失MIME类型,然后文件缓存的手机可能是一个障碍,下载的文件再次适当MIME类型。 

也有可能是远程文件的修改和缓存版本有缺陷,并防止修复档案版本从下载替换。 

清除浏览器缓存的移动电话应确保以后的好处下载最新的服务器配置(例如,设置新的MIME )和远程文件的更新。 
原因# 3
[从Motorola文件: http://developers.motorola.com/developers//wireless/global/emea/other/UCT.html ]
如何避免“Unsupported Content type”错误WAP 

如果你得到一个错误WAP说Unsupported Content type ,但不一定由于内容类型设置。  许多WAP页包含特殊字符,如瑞典(å ö ä) ,为了让他们正确显示您需要指定字符集使用。  为了指定的字符集是用于WAP网页上,您修改Content-Type标题服务器响应,包括字符集,例如“Content-Type: text/vnd.wap.wml; iso-8859-1” 。  当用户得到的答复是从服务器,它应该具有的一切所需的资料显示正确的内容。 

然而,有一个问题,使用这一方法。  所有手机显示的网关的字符集支持使用“Accept-Charset”的请求标头。  据HTML规格,这应该是比较字符集中指定一台服务器的反应,如果他们不匹配,错误Unsupported Content type应产生。 

为了使问题更加复杂,一些WAP网关不在乎比较字符集支持的设备要求,因此,内容将无法正确显示这些设备。  另一个复杂的是,指定的字符串的字符集是区分大小写,但一些WAP网关对待他们大小写字符串。 

总之,将有非常不同的结果取决于您使用的装置,其中WAP您使用网关和服务器响应。 

唯一的办法,以确保您的内容将正确显示是要始终检查字符集是接受了客户端和变换您针对这一字符集发送之前。 

9.1.4 “406: Not Acceptable” (“The server cannot generate a response that your client can accept.”)

原因# 1
你有一个Verizon的手机! 

Verizon公司不允许其客户(GIF)下载图片,铃声(MIDI)或程序,从任意互联网服务器。  一个必须使用其“Get It Now”服务,或使用USB电缆和“Get Around 'Get It Now' (GAGIN)”软件。 

解决方案:只需等待竞争的“自由市场” ,以消除“封闭性平台” 。  整个技术可能会过时的时候,这一成功,但是这是会发生什么时,公司的指导仅贪婪。 
原因# 2
该错误信息表明, MIME类型相关的文件扩展名(例如, .gif , .mid , .jar )的文件正在下载尚未指定的互联网服务器。

如果您有Apache互联网服务器,例如,那么你必须修改“.htaccess”文件,加入以下行:
AddType text/vnd.sun.j2me.app-descriptor jad
AddType application/java-archive jar
AddType text/vnd.wap.wml wml
AddType audio/midi mid