`
wuhua
  • 浏览: 2114166 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

如何把第三方类库jar包编译为BlackBerry类库cod文件

阅读更多

问题的核心:如何把第三方类库jar包编译为可以安装的BlackBerry类库cod文件。
注:某些时候,没有第三方类库的源码,只有 jar包,不考虑将class文件反编译。
问题解决的最重要步骤:使用bb-ant-tools ant脚本工具把第三方类库jar包编译为可以安装的BlackBerry类库cod文件。

环境:BlackBerry_JDE_PluginFull_1.1.1,内置的 net.rim.ejde.componentpack4.5.0_4.5.0.21。

------------------------------------------------------------------------------------------
第 一步:创建BlackBerry Project,测试应用,发现module not found或者class not found错误。

启动eJDE 1.1,创建BlackBerry Project
项目名称 StockQuote

创建目录 lib
下载kSOAP MIDP JAR文件ksoap-midp.zip,拷贝到 lib下面,重新命名为ksoapmidp.jar  (去掉中间的-,改文件后缀zip为jar)
http://ksoap.objectweb.org/software/downloads/

选择菜单 Project -> Java Build Path --> Libraries --> Add JARs
选择项目StockQuote,选择目录lib,选择文件 ksoapmidp.jar

点击eclipse菜单 Run --> Run Configurations...
新建一个BlackBerry Simulator配置,在栏目Projects里面勾上StockQuote项目,在Simulator栏目里面 勾上 "Launch Mobile Data System Connection Service (MDS-CS) with simulator“
点击Run按钮

点击模拟器里面的StockQuote图标,运行报错
JVM Error 104
Uncaught RuntimeException
Error starting StockQuote: Module 'ksoapmidp" not found.

模拟器 选择菜单 Simulator --> USB Cable Connected
在DOS窗口下面执行命令 javaloader -u dir > a.txt
发现模拟器里面的module只有StockQuote,没有ksoapmidp
Name                                           Version          Size      Created
---------------------------------------------  ---------------  --------  ------------------------
...
StockQuote                                     1.0.0            2268      Wed Feb 10 12:50:52 2010


------------------------------------------------------------------------------------------
第 二步:preverify 第三方类库

如果不做preverify ,后面执行ant作业的时候 偶尔出现错误:[rapc] org.ksoap.ClassMap: Error!: Missing stack map at label: 59
参考:http://www.blackberryforums.com/developer-forum/130803-missing-stack-map-label.html


拷贝 ksoapmidp.jar 到c:\temp目录

set JDE=C:\TOOLS\BlackBerry_JDE_PluginFull_1.1.1\plugins\net.rim.ejde.componentpack4.5.0_4.5.0.21\components
set PATH=%JDE%\bin;%PATH%
cd C:\temp
preverify -verbose -d . -classpath %JDE%\lib\net_rim_api.jar ksoapmidp.jar

------------------------------------------------------------------------------------------
第 三步:使用bb-ant-tools ant脚本工具把第三方类库jar包编译为可以安装的BlackBerry类库cod文件

下载:bb-ant-tools
http://bb-ant-tools.sourceforge.net/ 点击Downloads按钮
例如:http://downloads.sourceforge.net/project/bb-ant-tools/bb-ant-tools/1.2.4/bb-ant-tools-1.2.4-bin.zip?use_mirror=ncu
下 载:apache ant
http://ant.apache.org/bindownload.cgi
例如:http://apache.etoak.com/ant/binaries/apache-ant-1.8.0-bin.zip
拷 贝bb-ant-tools.jar 到  C:\TOOLS\apache-ant-1.8.0\lib


在c:\temp目录下面 编写一个build.xml文件
注意:
1)destdir="c:\temp"
这个目录c:\temp 必须是存在的目录,否则ant执行的时候保持  build.xml:14: destdir must be a directory   
2)<include name="ksoapmidp.jar" /> 
<!-- here must be relative directory, otherwise ant report:
build.xml:14: srcdir attribute or <src> element required!  -->


set ANT_HOME=C:\TOOLS\apache-ant-1.8.0
set JAVA_HOME=C:\TOOLS\jdk1.6.0_17
set PATH=%ANT_HOME%\bin;%PATH%
set JDE=C:\TOOLS\BlackBerry_JDE_PluginFull_1.1.1\plugins\net.rim.ejde.componentpack4.5.0_4.5.0.21\components
set PATH=%JDE%\bin;%PATH%
cd C:\temp
ant

提示:
[rapc] C:\Temp\ksoapmidp.jar(org/kxml/parser/AbstractXmlParser.class):0: Warning!: local variable(s) { local#2 } initialized but not used in: org.kxml.pars
er.AbstractXmlParser.readTree(Vector)
[rapc] Populating
[rapc] No errors.

BUILD SUCCESSFUL
Total time: 7 seconds

------------------------------------------------------------------------------------------
第 四步:把生成的module ksoapmidp手工安装到模拟器里面,测试

模拟器 选择菜单 Simulator --> USB Cable Connected
在DOS窗口下面执行命令 Javaloader -u load ksoapmidp.jad

提示:
RIM Wireless Handheld Java Loader
Copyright 2001-2007 Research In Motion Limited
Connected
Loading ksoapmidp.jad                 Done
27544 bytes sent at ~220352 bps
Disconnected


在模拟器里面可以看到ksoapmidp的应用
或者是
javaloader -u dir也可以看到


现在可以在模拟器里面点击StockQuote图标运行这个需要ksoapmidp类库支撑的程序了。

--------------------------------------------
第五步A:把第三方类库和应用程序移动打包为 alx格式,将来可以通过桌面管理器或者BES push发布。

把c:\temp\下面的所有文件拷贝到C:\BB.Dev\workspace.mywork\StockQuote\deliverables \4.5.0 下面

编辑BlackBerry_App_Descriptor.xml,选择Build栏目,勾上"Generate .alx file(Desktop Deployment/BES Push)"
选择 eclipse菜单 Project -> BlackBerry -> Package Project(s)
编辑生成的alx文件,
修改    <files >
StockQuote.cod

   </files>

<files >
ksoapmidp.cod
StockQuote.cod
</files>

--------------------------------------------
第五步B:把第三方类库和应用程序移动打包 jad格式,将来可以通过OTA方式发布。
把c:\temp\下面的所有文件拷贝到C:\BB.Dev\workspace.mywork \StockQuote\deliverables\4.5.0 下面
选择 eclipse菜单 Project -> BlackBerry -> Package Project(s)
编辑生成的jad文件


<?xml version="1.0" encoding="UTF-8"?>
<project name="StockQuote" default="buildLibrary" basedir=".">

 <property name="jdehome" location="C:\TOOLS\BlackBerry_JDE_PluginFull_1.1.1\plugins\net.rim.ejde.componentpack4.5.0_4.5.0.21\components" />
<property name="javahome" location="C:\TOOLS\jdk1.6.0_17" />

 <taskdef resource="bb-ant-defs.xml" classpath="lib/bb-ant-tools.jar" />

 <target name="buildLibrary" description="Build ksoapmidp library for BlackBerry">
<rapc jdehome="${jdehome}"
jdkhome="${javahome}"
destdir="c:\temp"
output="ksoapmidp"
quiet="false">

<jdp type="library"
title="ksoapmidp"
vendor="KSOAP Porject"
version="1.20"
description="ksoapmidp library"
arguments=""
systemmodule="false"
runonstartup="false"
startuptier="7"
ribbonposition="0"
icon="">
</jdp>

<src>
<fileset dir=".">
<include name="ksoapmidp.jar" /> 
</fileset>
</src>
</rapc>
</target>

</project>

分享到:
评论

相关推荐

    必须知道的11个java第三方类库

    Java 第三方类库在软件开发中扮演着不可或缺的角色,它们为开发者提供了丰富的功能和便捷的开发体验。以下是 11 个必须知道的 Java 第三方类库,它们分别是 DBUnit、Mockito、Hamcrest Matchers、Apache Commons ...

    使用composer命令加载vendor中的第三方类库 的方法

    2、给第三方类库SDK写上命名空间,命名空间为该类库的文件夹对应的名字 3、在composer.json文件中添加需要加载的第三方类库 4、打开cmd,进入到项目根目录,使用composer命令加载第三方类库,执行composer dump-...

    java 不用第三方类库解码编码Xml

    java 不用第三方类库解码编码Xml,验证可用

    支付宝、微信支付所需要的第三方类库

    为了实现这些支付功能,开发者通常需要集成特定的第三方类库。以下是对"支付宝、微信支付所需要的第三方类库"的详细解读。 首先,让我们关注“支付宝支付”。支付宝提供了Alipay SDK,它是一套完整的接口和服务,...

    metaRTC3.0的android/linxu/windows的 第三方类库的二进制文件

    metaRTC3.0的android/linxu/windows的 第三方类库的二进制文件 安卓系统包含两个ABI:arm64-v8a和x86_64 windows系统为msvc2019 64位 linux系统为64位

    抽屉效果第三方类库

    在iOS和Android平台上,许多开发者选择使用第三方类库来实现这种效果,因为原生SDK提供的组件可能不能满足所有设计需求或者需要更复杂的定制。本篇文章将详细介绍如何利用第三方类库来实现抽屉效果,并探讨其在实际...

    第三方类库计算器

    在Java中,类库通常以JAR(Java Archive)文件的形式存在,它们包含了编译后的Java类,可供开发者导入并使用。使用类库可以极大地节省开发时间和精力,因为它们已经解决了许多常见的问题和需求。 对于"计算器"这个...

    实现抽屉效果第三方类库

    在iOS开发中,实现抽屉效果通常需要借助第三方类库。下面将详细讨论如何利用这些类库来实现抽屉效果。 首先,我们来看标题提到的"实现抽屉效果第三方类库"。在iOS开发中,有多个知名且功能强大的第三方库可以帮助...

    laravel第三方类库Vendor

    在提供的压缩包文件 `FPH-WWW-CORE.git` 中,我们可能看到的是一个名为 `FPH-WWW-CORE` 的第三方 Laravel 类库的源代码仓库。这个库可能是用于构建 Web 应用的核心组件,包含了控制器、模型、视图、路由定义以及其他...

    二维码第三方类库文件

    二维码开发文件,用这个东西可以进行苹果开发中的二维码操作,非常的简单快捷的第三方类库

    详解Android Studio如何导入第三方类库、jar包和so库

    Android Studio 导入第三方类库、jar 包和 so 库详解 Android Studio 是 Android 应用程序开发的官方 IDE,它提供了许多功能强大的工具和插件,帮助开发者快速开发高质量的应用程序。然而,在实际开发中,我们经常...

    CI中使用其他类库解决方法参考

    在CodeIgniter (CI) 框架中,开发人员经常会遇到需要引入和使用第三方类库的情况。例如,PEAR (PHP Extension and Application Repository) 是一个广泛使用的PHP代码库,其中包含了大量的功能模块,如数据库抽象、...

    struts2 +hibernate3.x + sping 所有类库 jar包

    下面将详细介绍这三个框架以及它们的核心类库和相关jar包。 **Struts2** 是一个基于MVC设计模式的Web应用程序框架,它继承了Struts1的优点并解决了其不足,提供更灵活的控制流和更强大的拦截器机制。Struts2的核心...

    VB程序和类库的反编译工具

    VB程序和类库的反编译工具是一种技术性较强的应用,主要用于查看和理解基于Visual Basic (VB)编写的程序和类库的原始源代码。在软件开发和逆向工程领域,这种工具对于调试、学习、分析或修复VB程序至关重要。由于VB...

    C#将窗体编译成类库.rar

    通常,窗体会被编译成独立的可执行文件(.exe),但如果我们想要将窗体的逻辑分离出来,以便在多个项目中复用,那么将其编译为类库(.dll)就是一种好方法。 编译窗体为类库的步骤如下: 1. 创建类库项目:在...

    windos平台qt串口调试助手第三方类库

    Windows平台下使用qt开发串口调试助手所需要的第三方类库,包含四个文件,qextserialbase.h qextserialbase.cpp win_qextserialport.h win_qextserialport.cpp

    linux平台qt串口调试助手第三方类库

    Linux环境下,使用qt开发串口调试助手所需要的第三方类库,包含四个文件,分别是qextserialbase.h qextserialbase.cpp posix_qextserialport.h posix_qextserialport.cpp

    黑莓JAR转COD

    2. Blackberry JDK(Java Development Kit):这是专为黑莓设备开发的Java SDK,包含了用于编译和转换JAR文件到COD文件的工具。你需要下载并安装适合你操作系统的Blackberry JDK版本。 在Blackberry JDK中,关键的...

    json第三方jar包.zip

    JSON 类库使用的jar包 json lib 2 3 jdk15 jar json类库的核心包 已有 其他的jar包 ezmorph 1 0 6 jar 能完成bean的复制等功能 已有 morph 1 1 1 jar 已有 morph sandbox 1 1 1 jar 也是完成bean与bean...

Global site tag (gtag.js) - Google Analytics