引自http://www.cnjm.net/eclipseme/docs/advJarFiles.html
本文档说明了如何把一个外部JAR文件添加到MIDlet套件项目中。
-
JAR文件类型
-
添加硬件相关JAR文件
-
添加应用相关JAR文件
-
模拟器说明
JAR文件类型
从一个J2ME项目的观点来看,有两大类可以被添加到MIDlet套件项目的JAR文件。
理解这两类JAR文件的区别是很重要的,因为它们必须被区别对待才能得到你想获得的结果。
这两类是:
-
硬件相关JAR文件
这类JAR文件向MIDlet提供与一些硬件功能交互的支持,它们是安装MIDlet的目标手机或其它移动设备硬件的一部分。
这类文件的一个例子是Bluetooth™(蓝牙)接口类。
这类JAR文件是由设备制造商提供的,通常作为无线工具包的一部分或其扩展包(add-on)的形式提供。
这类JAR文件单独存在的意义在于,使J2ME开发者可以使用它们对MIDlet进行正确的编译,
且在部署后正确引用它们。你不需要把这些硬件相关JAR中的class安装到移动设备中去——
因为它们已经在那里了。
-
应用相关JAR文件
这类JAR文件包含由你或者其他J2ME开发者编写的、将直接作为MIDlet的一部分而被打包部署到移动设备的类文件。
例如,一个你用来处理与服务器之间交换数据的XML解析库。
这类JAR文件一般是从设备制造商之外的地方获取的。当然,如果你把你的代码打包成了JAR,那它也属于这类。
对它们进行区别的原因在于,EclipseME要对它们中的class文件进行不同的处理。
对于硬件相关JAR文件,EclipseME要保证这些文件中的类在构建过程中是类路径(classpath)的一部分,
这样你的MIDlet才能正确编译,但这些类绝不能
被打包到你的MIDlet部署包中去。
因为这样做相当于试图覆盖移动设备中的硬件实现类的功能。这或许根本无法工作,因为首先,这种类文件很多都
包含本地代码(native code),而不能在MIDlet运行环境的“沙盒(sandbox)”中工作。
其次,一个包含本地代码的MIDlet在部署流程中应该是无法通过预校验的。最后,即使上面的情况都没有发生,
只要是自律的MIDlet容器都不会允许MIDlet覆盖系统类——它会认为MIDlet是无效的而拒绝执行。
另一方面,对于应用相关JAR文件,EclipseME则需要抽取其中的所有类和资源文件等,把它们和
MIDlet套件项目中的相应项目一起,打包到最后的部署包中。J2ME设备中并不存在J2SE和J2EE系统中的
类路径(classpath)概念。一个J2ME套件只是由两个文件组成——一个JAR文件和一个JAD文件。
因此所有你的MIDlet要用到的类和资源都必须被打包成一个单独的JAR文件。
EclipseME根据你把文件加入系统的方式以及(隐含的)jar文件的相关“导出(export)”设定来区分其分类归属。
因此下面的工作对你很重要:
- 决定JAR文件的归属分类,然后
- 用正确的方式把它加入系统。
添加硬件相关JAR文件
有两种添加硬件相关JAR的方法。可以在设备管理首选项面板中添加,也可以直接添加到项目,但不进行导出。
是用设备定义来添加硬件相关JAR文件
硬件相关JAR文件可以从设备管理
首选项中作为一个新库来添加。
大部分情况下,EclipseME能够从你的无线工具包中获取所有库定义的相关信息。
如果没有的话,那么你需要首先向设备定义中添加一个新库(具体做法请参见这里
)。
最后,修改你的MIDlet套件项目的属性来使用新添加的或更新过的设备定义(参见这里
)。
以上步骤结束之后,JAR文件就包含到你的项目的构建路径中了,这样编译器可以找到相关类的定义,
但EclipseME不会试图把这些类添加到你的部署JAR文件中去——
因为EclipseME知道:这个JAR文件现在是无线工具包的一部分,仅用于类引用的目的。
如果你试图在模拟器运行MIDlet的时候,特别是在OTA模式中,你得到了非法类(illegal classes)
的错误提示,这可能是一个信号:你把硬件相关JAR错误的按照应用相关JAR的方式加入了系统。
直接添加到项目
在EclipseME 0.9.4版本之前,上面的方法是添加硬件相关JAR到EclipseME的唯一方案。
从0.9.4版本开始,硬件相关JAR文件还可以直接在项目属性的“Java构建路径”中的“库”面板中直接添加。
比如,在下面的项目中,mmapi.jar
已经被添加到了项目中。
但是,如果你按此方法添加JAR文件,需要你高度注意的是:在“排序和导出(Order and Export”面板中,
千万不要
选中该JAR文件旁边的复选框,就像下面这样:
如果选中了复选框,那么EclipseME会试图对mmapi.jar
中的内容进行
预校验并把其内容包含在输出的部署JAR文件中,这显然是错误的。
哪个方法更好?
在EclipseME 0.9.4之前,你只有一种方法添加硬件相关JAR,所以事情很简单。从0.9.4版本开始,
你有了两个选择,那么哪个更好些呢?
EclipseME的开发者认为,在绝大部分情况下,最好使用第一种方案——使用设备定义来添加硬件相关JAR文件。
这个方法使得这个改变在不同项目中获得重用,
而且更好的把硬件相关JAR文件和你的项目所使用的硬件设备相联系。
但如果因为某些原因你无法使用这个方法,那么第二种方法——添加不进行导出的JAR文件到项目——你也可以选用。
添加应用相关JAR文件
应用相关JAR文件必须
像非J2ME项目中的JAR文件那样,
被加入到项目的构建路径中。选择
菜单中的
菜单项,点击左边面板的
Java构建路径(Java Build Path)
项,然后在对话框的右边面板
中加入JAR文件(或类文件目录)。
就像这样,在上面的例子中,除了已经加入的硬件相关JAR文件mmapi.jar
之外,
我们正在为项目加入一个应用相关JAR文件extensions.jar
。
从EclipseME 0.9.4版本开始,你必须
在Java构建路径中的
“排序和导出”面板中,选中所有的应用相关JAR文件旁边的复选框,像下面这样:
完成之后,JAR文件或类文件目录中的class文件就成为你的项目构建路径的一部分,
而且会被打包到项目的输出部署JAR文件中。
就像上面的例子中,EclipseME会
收集extensions.jar
中的所有类和其它资源,进行预校验,然后把它们作为你的MIDlet的一部分进行打包部署。
但是,EclipseME不会
如此处理mmapi.jar
,
因为在“排序和导出”中,它旁边的复选框是空的。mmapi.jar
中的资源
在编译时是可用的,但不会被打包部署。
如果你试图在模拟器运行MIDlet的时候,特别是在OTA模式中,
你得到了ClassNotFoundException(未找到类)
异常,
这是个信号,表示相关的类未被正确打包到你的部署JAR文件中。
通常这意味着你没有正确的把应用相关JAR文件添加到项目的Java构建路径中,
或者是忘记选中“导出”复选框了。
模拟器说明
如果你正在使用一些特殊特性,比如蓝牙、视频等,你可能会处于这样一种境地:
你按照上面的方法正确的添加了硬件相关JAR,你的应用程序也可以正确的编译,
但是在模拟器中运行的时候,硬件功能却似乎并不工作。
这种情况下唯一的可能性就是,这并非EclipseME的问题——而很可能是J2ME模拟器的问题。
在很多情况下,无线工具包的模拟器对硬件特性的支持仅限于正确载入MIDlet,
而不包含对物理设备硬件特性的真实模拟。不幸的是,对这种情况我们也无能为力。
分享到:
相关推荐
1) 为MIDlet套件添加权限声明标签; 2) 通过KeyTool工具创建并导出自签名证书; 3) 通过JadTool工具,利用上一步骤生成的自签名证书,对MIDlet套件进行签名; 4) 安装自签名证书到目标手机; 5) 安装已签名...
对于很多没有BlackBerry 应用经验的开发者,或者对于很多现有的J2ME 的系统,如果以最小的代 价和BlackBerry 应用交互,或者和BlackBerry...个非常有用的能力:它允许一个MIDlet 套件和另一个MIDlet 套件共享记录存储。
本文将逐一介绍把MIDlet 程序移杆到BlackBerry 平台上的 各种方法,让读者可以轻松进入BlackBerry 开发世界。 注意,本文针对在j2me 开发方面有一定经验并且有需要将现有的MIDlet 应用移植到 BlackBerry 平台上的...
这个是Eclipse项目,MIDlet控件的例子,分成input, output 和midlet.有助于理解控件的使用和分层。
JAVA移动实现与网络服务器端(servlet)通信实现
手机java格式\Program\opera-mini.jar Manifest-Version: 1.0 MIDlet-Name: Opera Mini MIDlet-1: Opera Mini, /i.png, Browser MIDlet-Data-Size: 10240 MicroEdition-Configuration: CLDC-1.0 MIDlet-Icon: /i....
MIDlet通过蓝牙与电脑通信的案例 MIDlet通过蓝牙与电脑通信的案例
J2ME读取MIDlet的系统属性,用于判断J2ME获取的各个属性
3.用WINRAR打开JAR文件,把里面的META-INF文件夹解压出来,打开META-INF文件夹,里面有个MANIFEST.MF文件,用记事本打开这个文件,直接在最后加上两句. Nokia-MIDlet-auto-start: no Nokia-MIDlet-no-exit: true 退出保存...
详细介绍了midlet程序签名机制,包括三种信任域的不同、开发过程中使用的签名与产品签名的不同等内容。并基于MOTO手机开发平台给出示例。
我做的毕业设计,功能是实现手机和SQL的连接解压并配置相关的TOMCAT服务器,在WTK2.5下,可以进行仿真,同时可以生成 .jar 文件传到手机上用
MIDlet与J2EE结合开发移动商务应用.pdf
使用MIDP(Mobile Information Device Profile)的开发人员经常会抱怨用些什么办法才可以在一...第二个办法更简单,把图片用MIDlet打包成jar文件。如果你使用的是J2ME开发工具,把PNG文件放在你的项目文件里面就可以了。
EclipseME 提供了下列功能以帮助开发者轻松的创建Midlets: • 无线工具包首选项 • 创建新的J2ME Midlet 套件项目 • 创建新的Midlet • Java 应用描述文件(JAD)编辑器 • 对class 文件进行增量的/...
黑莓MIDlet开发指南 BlackBerry MIDlet Development Guide V4.0 介绍如何使用黑莓JDE开发用于黑莓手机的标准MIDlet程序。 本文档版权属于RIM,仅用于学习交流,切勿用于商业用途。
文件结构 javax/microedition/io/ javax/microedition/lcdui/ javax/microedition/midlet/ javax/microedition/rms/
this is simple example of j2me midlet by using lwuit library in which simple form is displayed
使用pascal语言开发手机java游戏的工具.
在说明WTK文件结构之前,让我们首先把它安装起来。 WTK的安装程序与普通程序一样简单,只有一点需要注意,由于WTK自身并没有附带Java的运行环境JDK,所以,在WTK安装之前你需要安装自己的JDK(我们这里选用的是...