设为首页 收藏本站
查看: 1945|回复: 0

[经验分享] J2ME in a Nutshell(翻译版) :第二章 连接有限设备配置CLDC,2.1.3在虚拟机KVM上编译和运行代码

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-11 10:21:18 | 显示全部楼层 |阅读模式
  
  2.1.3在虚拟机KVM上编译和运行代码
  为了使用KVM编译和运行应用程序,你需要下载和安装如下的软件:
  1.        java 2 SDK或者带有java命令行编译器的开发环境
  2.        Sun的CLDC参考的实现
  如果你还没有安装合适的java 2SDK,你可以在http://java.sun.com/j2se下载。
  CLDC参考实现包含了源代码和sun的CLDC实现的文档,可以运行在微软的windows,Linux和Solaris平台,并且也包含了KVM和它的可执行工具。这个可以在http://java.sun.com/products/cldc/上获得。
  参考实现是以档案的形式存放的,你必须把他解压到一个目录中。在接下来的几节中,我们将使用下面的变量来表示Java 2SDK和CLDC参考实现的安装目录:
  %JAVA_HOME%(Windows)或者$JAVA_HOMELinux/Solaris
  Java 2SDK的安装目录
  %CLDC_HOME%(Windows)或者$CLDC_HOMELinux/Solaris
  CLDC的安装目录,CLDC的解压缩目录是j2me_cldc,在这个目录下面。
  %CLDC_PATH%(Windows)或者$CLDC_PATHLinux/Solaris
  
  bin目录在CLDC的安装目录下面,等价于windows平台上的%CLDC_HOME%\j2me_cldc\bin
  和Linux/Solaris平台上的$CLDC_HOME/j2me_cldc/bin。
  /*代码说明略*/
  首先,打开windows命令行(或者linux和solaris上的shell)并且设置 PATH变量来包含Java2SDK和CLDC的可知性文件。对于windows来说,使用如下的命令:
  PATH=%JAVA_HOME%\bin;%CLDC_PATH%\win32;%PATH%
  如果你是使用linux或者solaris,你需要使用合适的shell命令来保证你设置了正确的CLDC可执行文件,那就是$CLDC_PATH/linux or $CLDC_PATH/solaris.
  其次,编译例子代码来生成class文件。为了简化命令,把你的工作目录设置为%EXAMPLES%\src,然后敲入如下的命令:
  mkdir tmpclasses
  javac -bootclasspath %CLDC_PATH%\common\api\classes -d tmpclasses
  ora\ch2\HelloWorld.java
  这些命令将会编译原文件,并且在tmpclasses目录下生成class文件。下面的几点值得注意:
  1.         我们使用-d命令行选项来告诉编译器把class文件放在tmpclass目录下面,而不是在确省的原文件目录下。这是因为在使用之前,所有装载到KVM中的class文件必须进行预验证(参照2.1.1.3),这将会创建一个修改的class文件。我们将使用tmpclass目录下的类文件作为预验证的输入并且把修改多的class文件写入到原文件的目录。
  2.         当运行java编译器的时候,我们使用了-bootclasspath选项来改变装载的java核心类的位置。就如你将在2.2节中看见,CLDC没有包含所有J2SE的包和类,所以我们只要让编译器装载CLDC核心库就可以了,而不是J2SE的(确省的类库)。如果我们没有这么做,就有可能编译 引用J2SE的API的代码。这将产生合法的代码,而当装载进入KVM的时候会导致错误。
  在装载进入KVM之前,我们使用命令preverify来预验证代码。为了验证class文件并且把验证的版本写入原文件的相同目录,使用如下的命令:
  preverify -classpath %CLDC_PATH%\common\api\classes;tmpclasses -d .
  ora.ch2.HelloWorld
  -classpath选项表示preverify搜索类的路径,-d表示预验证的类版本写入的位置。-classpath后面的路径在windows平台上以分号隔开(在linux或者solaris上以冒号隔开)注意与编译器需要原文件名不同的是,预验证器需要完整的java类名称。
  如果需要验证一个以上的类的时候,有两种方法可以这样做。最直接的方法就是把需要验证的类列出来:
  preverify -classpath %CLDC_PATH%\common\api\classes;tmpclasses -d .
  ora.ch2.HelloWorld ora.ch2.Help
  另外,如果我们在命令行上提供的目录,那么将会对这个目录下的所有类进行验证:
  
  preverify -classpath %CLDC_PATH%\common\api\classes -d . tmpclasses
  在这种情况下,我们没有必要在-classpath后面加上tmpclasses路径,因为我们已经在后面申明搜索路径了。
  preverify命令的可选命令将会在第八章阐述。
  最后,我们可以使用kvm来运行例子:
  kvm -classpath . ora.ch2.HelloWorld
  这将产生我们 熟悉的输出:
  Hello, KVM world
  注意classpath选项只需要指定ora.ch2.HelloWorld的路径。我们没有必要指定核心类的路径,因为KVM知道在那找到它们。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-55911-1-1.html 上篇帖子: ubuntu下如何使用KVM 下篇帖子: 搭服务器之kvm--vnc连接虚拟机连接闪退直接消失 以及virsh shutdown命令无效解决办法。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表