@shellex说: 不能回来再娶阿姨咩
  • Pages

  • Topics

  • 随便看看

  • 路边社评论员

    • zhangshine:
      呵呵,99宿舍网,好搞 »
    • zhangshine:
      好囧o(╯□╰)o »
    • 御前:
      你大爺 老子可是半專業的!剛入了L號I4...挖哈哈哈3k3(血淚可惜原來的非凡沒帶來北京 要不可以... »
    • alswl:
      @shellex 哦,发现我随便点开2张喜欢的,都进了deviantwear囧~ »
    • alswl:
      @shellex 不错不错,我还专门跑去那个网站看了,貌似是卖T恤的?我个人最喜欢彩虹色的桌面 »
    • alswl:
      我是来看图的~ »
    • SunnyGao:
      从来木考虑过要备案囧...... »
    • wangxxx:
      在学雷锋日 前来留名 »
    • makestory:
      乐观预计2020年之前这款游戏可以正式上市。 »
    • xiao3:
      你的模板都太暗!暗色系~~ »
    • shellexy:
      贴上应付猫和苏的桌面点名http://img.ly/A3thttp://img.ly/A3V文字什么... »
    • shellexy:
      @shellex 我点击了【回复这个鸟人。】,结果发现是回复猫猫。为啥上次还是黑色字体的,这回又... »

在Linux下进行JavaME CDC开发

Java遗憾得很,按照Sun对待Desktop产品的作风,和JavaFX一样,姗姗来迟的Sun Java Toolkits for CDC只有Windows的版本。

看来这个Sun的这个Mobile/Embedded部门对待自家的Solaris也不见的有多友好…所以我们用Linux的同学也沾不到什么光。

不过还好了,PhoneME这个项目的存在真是让人倍感欣慰。于是偶这个用Gentoo的同学才有了在Linux上开发CDC程序的可能性。

在这里已经有前辈做了相关的工作(需翻墙,不是故意要屏蔽小白的):

在ubuntu下用Eclipse开发基于PhoneMe Advance的J2me程序(1)-基本配置

在ubuntu下用Eclipse开发基于PhoneMe Advance的J2me程序(2)-AWT开发

如果懒得翻墙可以听我简单的说下。

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);
		}
	}
}

another screenshot for phoneME application
真丑哈,这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里设置兼容性。
eclipse setting

好了,现在建立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
  1. On June 7, 2009 at 7:16 pm
    gza633 :

    说到sun 明天在北京有个sun的”second life”的推广会 有兴趣可以去看看

    Notify

Leave a Reply