20071023 kvm linux
http://www.yippeesoft.com
该死的JAVA兼容性。。。。。。。
用了JDK 1.5 反而不行
修改了两个MAKEFILE
TOP=../..
include $(TOP)/build/Makefile.inc
JAVA =/home/sf/j2sdk1.4.2_04/bin/java
JAVAC = /home/sf/j2sdk1.4.2_04/bin/javac
JAR = /home/sf/j2sdk1.4.2_04/bin/jar
JAVAC = /home/sf/j2sdk1.4.2_04/bin/javac
~~~~~~~~~~~~~
Linking … kvm
make[1]: Leaving directory `/home/sf/kvm/j2me_cldc/kvm/VmUnix/build\’
<<<Finished Recursively making ../../kvm/VmUnix/build all.
[root@mobile linux]# cd /home/sf/kvm/j2me_cldc/kvm/VmUnix/build
[root@mobile build]# ls
fp_obj kvm Makefile obj
[root@mobile build]# ./kvm
ALERT: Must provide class name
Usage: kvm <-options> <classfile>
Options:
-version
-classpath <filepath>
-heapsize <size> (e.g. 65536 or 128k or 1M)
~~~~~~~~~~
cannot access java.lang.StringBuilder
问题是出在几个String相加
找了网上的答案,说是1.5太新,wtk2.2只能用1.4.2的.
反正最好不要用最新的东东,而是挑一个中间的版本。
否则,会有些东东不支持这个滴。
1.5使用StringBuilder类来代替1.4中的StringBuffer类
public final class StringBuilder extends Objectimplements Serializable, CharSequence
一个可变的字符序列,从jdk1.5以下版本开始才有该类。
解决方法:
因为Jbuilder2006默认的是jdk1.5所以需要修改jvm的一些设置
Tools ->Configue->JDKs把jdk改成1.4的,之后进入项目属性project->Projet Properties 左侧栏的Build->Java 右侧Language Features和Target Vm均选择 Java 2 SDK v 1.4
JDK1.5API:
此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
在 StringBuilder 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串生成器中。 append 方法始终将这些字符添加到生成器的末端;而 insert 方法则在指定的点添加字符。
例如,如果 z 引用一个当前内容为“start”的字符串生成器对象,则该方法调用 z.append("le") 将使字符串生成器包含“startle”,而 z.insert(4, "le") 将更改字符串生成器,使之包含“starlet”。
通常,如果 sb 引用 StringBuilder 的实例,则 sb.append(x) 和 sb.insert(sb.length(), x) 具有相同的效果。每个字符串生成器都有一定的容量。只要字符串生成器所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区。如果内部缓冲区溢出,则此容量自动增大。
将 StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer。
一、java源码的编辑,编译。//070212 未完待续
编辑一个java源文件a.java:
class a &leftsign;
public static void main(String[] args) &leftsign;
String s = "世世世世世世";
System.out.println(s);
&rightsign;
&rightsign;
在windows xp中文版中,(默认file.encoding=GBK) 编译OK。
在linux 中,locale环境为 LANG=en_US; LC_ALL=C 时,编译出错:
a.java:3: warning: unmappable character for encoding ASCII
String s = "????????????";
^
这是为什么呢?
java的class文件使用的是UTF-8编码。
a.java被编译到a.class 的过程,包含到 UTF-8编码转换的过程。
在这里,就是从 C -> UTF-8。
The locale "C" or "POSIX" is a portable locale; its LC_CTYPE part corresponds to the 7-bit ASCII character set.
~
[root@LinuxServer rpm]#vi .bashrc
set JAVA_HOME=/usr/java/j2sdk1.4.2_07
export JAVA_HOME
set PATH=$PATH:$JAVA_HOME/bin
export PATH
set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export CLASSPATH
当然也可以通过更改/etc/profile来实现,不过不推荐这么做,
因为这样的设置将对所以用户的shell都生效,对系统安全会产生影响。
就是在这个文件的最后加上:
export JAVA_HOME=/usr/java/j2sdk1.4.2_07
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin
历史博文
- ARM mini2440笔记一(点亮LED) - 2010
- 20081118 bios bmp - 2009
- 20070220 有道 php5 sqlite - 2007
- 0318 东方红 曲目 - 2006
- BOBLOG的HTMLAREA复制问题5 - 2005
- BOBLOG的HTMLAREA复制问题4 - 2005
- BOBLOG的HTMLAREA复制问题3 - 2005
- BOBLOG的HTMLAREA复制问题2 - 2005