在Linux下进行JavaME CDC开发
来源:互联网 发布:数据标记大小怎么设置 编辑:程序博客网 时间:2024/05/17 09:35
[日期:2009-06-13]来源:www.sxnsx.com 作者:sxnsx在Linux下进行JavaME CDC开发
遗憾得很,按照Sun对待Desktop产品的作风,和JavaFX一样,姗姗来迟的Sun Java Toolkits for CDC只有Windows的版本。
看来这个Sun的这个Mobile/Embedded部门对待自家的Solaris也不见的有多友好…所以我们用Linux的同学也沾不到什么光。
不过还好了,PhoneME这个项目的存在真是让人倍感欣慰。于是偶这个用Gentoo的同学才有了在Linux上开发CDC程序的可能性。
在这里已经有前辈做了相关的工作(需翻墙,不是故意要屏蔽小白的):
如果懒得翻墙可以听我简单的说下。
phoneME有两个开发版,一个是for CLDC的PhoneME Feature,一个是for CDC的PhoneME Advanced。
那么我需要下载支持CDC的PhoneMe Advanced for Linux的Milestone Releases。如果需要GUI (AWT only),请下载具备 Persoanl Profile(PP)支持MR1版本,否则就是MR2版本,它不支持PP,只支持Personal Basic Profile。
PhoneMe Advanced Mr2 可以在下载页下载:https://phoneme.dev.java.net/downloads_page.html#advanced
PhoneMe Advanced Mr1 可以在陈旧的下载页下载:https://phoneme.dev.java.net/downloads_previous.html#advanced
然后解压就好。如果是Mr1,选择里面那个pp结尾的目录,里面就是phoneME的runtime。而bin目录下的cvm则是JavaME 虚拟机。
测试一下:
[shellex@gentoo:bin]$ ./cvm -version
Product: CDC AMS 1.0 for PP (b31)
Profile: Personal Profile Specification 1.1
JVM: CDC 1.1.1_01 (interpreter loop)
很好很强大。
写一个巨呆B的Hello World。我还要图形的。很简单的,就俩按钮,一个用来正日,一个用来日成。代码和运行结果如下package org.demo;
import java.awt.*;
import java.awt.event.*;
public class Test extends Frame {
Button fuck_me ;
Button fuck_off ;
public static void main(String args[]) {
Test f = new Test("WTF?");
f.launch();
}
public Test(String str) {
super(str);
}
public void launch() {
this.setSize(300, 100);
this.setLayout(new FlowLayout());
fuck_me = new Button("Fuck Me!");
fuck_off = new Button("Fuck Off!");
// register new Actions Listener
fuck_me.addActionListener(this.new FuckMeHandler());
fuck_off.addActionListener(this.new FuckOffHandler());
this.addWindowListener(this.new FrameHandler());
fuck_me.setActionCommand("You");
this.add(fuck_me);
this.add(fuck_off);
this.setVisible(true);
}
class FuckMeHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("Fuck " + e.getActionCommand() + "!");
}
}
class FuckOffHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
class FrameHandler extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
}真丑哈,这UI。
如果你像我一样使用较新的Java SDK(比如Sun-Java-SDK-6),那么编译的时候不要忘了给javac指定 -source 参数和 -target 参数以保证class文件和源文件的版本兼容性(如图)。都设置为1.4以下的版本即可。
由于PhoneME使用的Awt对于Linux绑定的Native GUI component是QT,所以可能出现一些问题。
如果运行时出现libqtawt.so相关的连接错误,请用
ldd [phoneME Home]/lib/libqtawt.so
检查它的依赖情况。然后根据输出补全对应的缺少的动态链接库文件即可。比如的gentoo,对QT无爱,可不想编译几十Mb去搞一个Java Awt的QT bind,所以就根据需要去我的Ubuntu下copy了缺少的两个库文件到phoneME的lib目录下。如果你用Ubuntu开发估计不会出现这种情况。
===========Eclipse 的伟岸分割线 =======================
好了。没有IDE,做Java工程可以说相当的痛苦(shellex不会ant)。
哦…看到Eclipse这伟岸的Logo,我的小心肝禁不住扑嗵扑嗵地跳了起来…好了,现在让我们为Eclipse加入PhoneME支持。需要下载的东东是mToolkit,官网(http://dz.prosyst.com)
下载其中的ProSyst mToolket Basic Edition的GUI setup tool。其实就丫是一Eclipse插件,让Eclipse能使用丫的phoneME JRE,安装即可。
然后在Eclipse的Preferences->Java->Installed JERs里面添加新的运行环境。选择CVM VM,指定你的phoneME安装路径即可。
也别忘了在Eclipse的Project->Propertes里面设置Java Compiler的JDK compliance里设置兼容性。
好了,现在建立Java工程时可选这个JER了。可以开始写CDC程序了。如果还出现问题,不妨写一个启动脚本,临时添加一些环境变量:#! /bin/sh
cd ~/Programs/eclipse
# setting for PhoneME.
export PHONEME_HOME=/home/shellex/Programs/phoneme/phoneme_advanced-mr1-pp/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PHONEME_HOME/lib
export PATH=$PATH:$PHONEME_HOME/bin
export PATH=$PATH:/usr/lib/jvm/java-6-sun/bin
./eclipse
本文来自http://www.sxnsx.com/develop-javame-cdc-with-phoneme-in-linux/
- 在Linux下进行JavaME CDC开发
- 在linux下如何进行流媒体开发
- 在linux下进行JNI开发
- 在Linux下进行C51开发
- 使用Mono 在 linux 下进行.net应用程序开发
- 如何在linux环境下进行单片机开发学习!
- 如何在Linux系统下进行C++程序开发
- 在windows下进行linux开发:利用Vagrant+virtualbox
- 如何在Linux下进行stc51单片机的开发
- 在windows下进行linux开发:利用Vagrant+virtualbox
- 在linux环境下使用C++语言、rabbitMQ进行开发
- 在进行USB CDC类开发时,无法发送64整数倍的数据
- 在进行USB CDC类开发时,无法发送64整数倍的数据(续)
- 在ccs7下进行DM6467的开发(2):在Linux下安装ccs
- 在ccs7下进行DM6467的开发(3):在Linux下连接仿真器
- JavaME 开发流程详解
- JavaME 开发流程
- JavaME开发流程详解
- 无线校园网的QoS部署
- MySql数据备份和还原的常用命令
- 基于mini2440的qtopia程序设计之三:qtopia界面定制
- Mini2440 上UCOSII 添加按键和蜂鸣器任务
- 各种模式一览
- 在Linux下进行JavaME CDC开发
- 如何减少浏览器repaint和reflow(中)
- Java编程琐事(7)——封装JDBC分页
- TT
- TT2
- 嵌入式linux在DOM上的构建过程遇到的问题?
- android如何创建avd
- 如何减少浏览器repaint和reflow(下)
- 内存重叠