附录A 常见问题解答(FAQ

 

1.       怎样使用本书配套光盘中的源程序?

答:首先需要安装J2SDK1.4.1, midp2.0fcs, WTK2.02.1(这些软件在配套光盘中都有)然后才能使用这些源程序。

对于第1-7章中的程序,可以使用mid  xxxx(这里xxxx.jad文件的名字)来编译和运行,也可以直接使用 run   xxxx来运行它们。相关的.bat文件可以从配套光盘的bat目录中找到,拷贝到程序所在目录即可。(在第2章中有个别的例子含有main函数,可以使用test  xxxx来编译和运行;在第4-6章中有个别例子含有多个文件或类,使用mid命令时要跟多个类的名字,具体的做法见书中的说明。)

其余各章的程序要使用WTK2.0(或WTK2.1),具体做法是:将相应项目的目录复制到c:\wtk20\apps之下,并去掉文件的只读属性,然后使用WTKKToolbar工具来打开这些项目,单击“Build”即可编译,单击“Run”即可运行。详细的操作可以参见1.3节。

 

2.       哪些手机可以运行Java程序?

答:现在有很多手机都能运行Java程序,例如:Motorola388T720T720iV60iNokia9210c661072107650353061003650Siemens6688i31182128S57Sony EricssonP820等等。要注意有部分手机才支持MIDP2.0,如NECe606Nokia6600,华硕的AGP 600等等。

 

3.       怎样在计算机上运行从网站下载来的MIDP程序?

答:从网站下载MIDP程序要注意同时下载.jad文件及.jar文件,在必要时需要对.jad文件的内容进行修改,例如,修改其中的MIDlet-Jar-URL: http://www.xxx.com/aaaa/xxxxx.jar改为MIDlet-Jar-URL: xxxxx.jar(即使用本机的jar文件)。然后使用run  xxxxxrunW xxxxx即可运行它们,这里用到的run.batrunW.bat在配套光盘的bat目录下可以找到。

 

4.       怎样将程序放入实际的手机中运行?

答:要使用手机供应商提供的工具软件,或者通过网络进行。可以参考本节的1.5节中的详细介绍。

 

5.       为什么程序在实际的手机中运行不正常?

答:有多种原因,最常见的情况:一是.jad文件对.jar文件的大小(MIDlet-Jar-Size)描述与实际的情况不合,请改正后,重新载入手机中;二是手机只支持MIDP1.0而不支持MIDP2.0,如果你的程序确实没有使用MIDP2.0中的类,可以将.jad文件中的配置(MicroEdition-Profile)从MIDP-2.0改为MIDP-1.0。还有一种常见的情况是程序中使用了特殊的API,这种程序无法在其他类型的手机上使用。

 

6.       一个MIDP程序经过了编译和打包,为何运行时提示“没有经过preverify?

答:这是因为MIDP的程序的类文件在运行前要经过“预审(preverify)”以保证其安全性以及不使用不该使用的类。MIDP具体的编译、预审、打包、运行的步骤见本书的1.2节。另外,使用WTK Java Wireless Toolkit)来进行这些步骤更为方便,

 

7.       使用WTK时,为什么源程序修改正确了而WTK仍提示有错?

答:这是由于WTK还没有刷新该项目。应该重新打开该项目,然后再进行编译。

 

8.       使用WTK时,为什么在外部编辑器中修改了.jad文件,而WTK又让它回原了?

答:这是由于WTK记录了.jad文件的内容,当建立该项目时,它又将.jad文件的内容写回去了。应该在没打开该项目的情况下修改.jad文件,然后再打开该项目。也可以在WTK通过“Project”菜单中的“Settings….”中设置,然后WTK会自动将这些设置写回到.jad文件中。

 

9.       J2ME程序中为何不能使用doublefloat?

答:这是受设备处理能力的限制,所以在J2MEMIDP中规定不能使用浮点数,本书的第8章专门介绍了如何处理浮点数。

 

10.   J2ME程序能使用文件吗?

答:J2ME中不能使用普通意义下的文件,在本书的第6.2节专门介绍了如何使用将资源文件作为输入流的方法。可以用RMS来管理数据(见第6章)。另外,在一些手机供应商的专用API(如Motorola提供的API)中有文件类。

 

11.   J2ME程序中为何不能使用AWT?

答:J2ME中有专用的界面方式,称为lcdui,它比AWTSWING要简单得多,本书中第34章中进行了介绍。另外,有类似于AWT的软件包,叫kAWT,书中的11.2节中进行了介绍。

 

12.   WTK中怎样使用从网站下载的类库?

答:如果它提供了源程序,可以将源程序复制到项目的src目录下;如果它提供了编译并预审过的类库,可以将类库复制到项目的lib目录下,要注意将.zip文件名更名为.jar文件;如果它提供了.class文件,可以将它先打包到.jar文件,然后放入到lib目录下。

 

13.   生成的.jar文件特别大,不能装入到手机上,怎么办?

答:一是去掉不必要的类,二是使用WTK中的“Project”菜单中的“Package /Create Obfuscated Package”功能,它可以有效地减少.jar文件的大小。但这要求系统中安装了Proguard,具体操作方法参见10.5节。

 

14.   怎样保护源程序,防止别人反编译?

答:可以使用Obfuscate技术对程序进行代码混淆,最易于使用的代码混淆器是Proguard,具体操作方法参见10.5节。