博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
移植java虚拟机到mini2440
阅读量:4134 次
发布时间:2019-05-25

本文共 3616 字,大约阅读时间需要 12 分钟。

    一、选用sun的phoneme

    https://phoneme.dev.java.net/
二、下载
    http://download.java.net/mobileembedded/phoneme/advanced/phoneme_advanced-mr2-dev-src-b97-20_nov_2008.zip
三、解压
    unzip phoneme_advanced-mr2-dev-src-b97-20_nov_2008.zip
四、修改makefile
    cd phoneme_advanced_mr2/cdc/build/linux-arm-generic
    gedit GNUmakefile
    修改 CVM_TARGET_TOOLS_PREFIX=/usr/local/arm/4.3.2/bin/arm-linux- 为自己的交叉编译器的地址   
    修改 USE_AAPCS ?= false 为 true
五、输出PATH
    export PATH=/usr/local/arm/4.3.2/bin/:$PATH                     为自己的交叉编译器的地址
六、编译
    make  
七、如果是使用ubuntu的朋友,可能要安装sun-java6-jdk和另外的一两个工具
    Java SDK安装配置
    http://wiki.ubuntu.org.cn/Java%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE
    另外的一两个工具可以通过 apt-get install 来安装(出错时会提醒的了,具体我忘了,没有记录)
八、出错
    ../../src/linux-arm/javavm/runtime/segvhandler_arch.c:45:26: error: asm/ucontext.h: No such file or directory
    ../../src/linux-arm/javavm/runtime/segvhandler_arch.c: In function 'handleSegv':
    ../../src/linux-arm/javavm/runtime/segvhandler_arch.c:224: error: dereferencing pointer to incomplete type
    ../../src/linux-arm/javavm/runtime/segvhandler_arch.c:285: error: dereferencing pointer to incomplete type
    ../../src/linux-arm/javavm/runtime/segvhandler_arch.c:285: error: dereferencing pointer to incomplete type
    ../../src/linux-arm/javavm/runtime/segvhandler_arch.c:286: error: dereferencing pointer to incomplete type
    ../../src/linux-arm/javavm/runtime/segvhandler_arch.c:294: error: dereferencing pointer to incomplete type
    修改 segvhandler_arch.c 文件
    gedit ../../src/linux-arm/javavm/runtime/segvhandler_arch.c
    修改
    #define ucontext asm_ucontext
    #include
    为
    //#define ucontext asm_ucontext     //注释掉这句
    #include             //去掉arm/
九、编译
    make  
    编译成功!
    ls
    可以看到在当前目录有
    bin   lib   testclasses.zip
十、测试
    1)、拷贝上面三个文件与文件夹到开发板/home/j2me目录
    2)、在开发板/etc/init.d/rcS文件里加入如下
        JAVA_HOME=/home/j2me
        export PATH=$JAVA_HOME/bin:$PATH
        export CLASSPATH=.:$JAVA_HOME/lib
    3)、经典的HelloWorld
        cd /home/j2me/bin
        ./cvm -cp ../testclasses HelloWorld
   
        可以看到输出了 HelloWorld.
    4)、来个全面测试
        ./cvm -cp ../testclasses.zip Test
        *Number of command line arguments: 0
        Starting test1
        ...recurse
        ...recurse
        ...recurse
        ...link
        ...link
        ...link
        Starting test1 again
        ...recurse
        ...recurse
        ...recurse
        ...link
        ...link
        ...link
        test6: Caught inner java.lang.NullPointerException
        test6: Caught outer java.lang.NullPointerException
        Testing Array Copy
        *TestE exception thrown because "I'm feeling Testy"
        * threw java.lang.ExceptionInInitializerError
        * threw java.lang.NoClassDefFoundError: StaticE
        c1 = class [LTest;
        c2 = class [[LTest;
        c3 = class [LC;
        c4 = class [[LC;
        c1.modifiers = 1041
        c2.modifiers = 1041
        c3.modifiers = 1040
        c4.modifiers = 1040
        *FloatMIN =1.4E-45
        *FloatMAX =3.4028235E38
        FloatMIN (the int bits) =1
        FloatMAX (the int bits) =2139095039
        java.lang.IllegalArgumentException: too many dimensions
            at java.lang.reflect.Array.multiNewArray(Native Method)
            at java.lang.reflect.Array.newInstance(Unknown Source)
            at Test.testDeepArrayConstruction(Unknown Source)
            at Test.main(Unknown Source)
            at sun.misc.CVM.runMain(Unknown Source)
        Constructed an object of type
        [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[LTest;
        finally!
        Requesting GC with a latency request of 2 seconds
        (Turning GC tracing on)
        Sleeping 5 seconds, and waiting for GC's
        Woke up! Cancelling latency request
        .............
        *CONGRATULATIONS: test Test completed with 411 tests passed and 0 failures
        *Output lines starting with a * should be checked for correctness
        *They can be compared to src/share/javavm/test/TestExpectedResult
        *CONGRATULATIONS: test Test completed with 411 tests passed and 0 failures
        这句话意味着什么,我就不说了~~ 恭喜你!
               
               
               
               
[b]本文来自ChinaUnix博客,如果查看原文请点:[/b][url]http://blog.chinaunix.net/u1/49274/showart_2058477.html[/url]

转载地址:http://aesvi.baihongyu.com/

你可能感兴趣的文章
豆瓣的程序性能真的很惊人,但...
查看>>
豆瓣的 Web 服务器
查看>>
优化PHP代码的40条建议
查看>>
37Signals 架构
查看>>
中国最完整的sysctl.conf优化方案
查看>>
高性能服务器设计
查看>>
性能扩展问题要趁早
查看>>
PlentyOfFish 网站架构学习
查看>>
Tomcat集群与负载均衡
查看>>
多服务器的用户身份认证方案
查看>>
Tomcat 的集群和负载均衡
查看>>
Lucene构建index性能调整
查看>>
Map Reduce - the Free Lunch is not over?
查看>>
众说纷“云”:看云计算在存储领域异军突起
查看>>
Using Nutch 0.8.1 for Intranet Crawling and Searching
查看>>
类似Google构架的开源项目Hadoop近获社区关注
查看>>
hadoop 分布式文件系统:体系和设计
查看>>
用Hadoop搭建分布式存储和分布式运算集群
查看>>
IBM推动MapReduce发布Eclipse插件
查看>>
Linux 内核剖析
查看>>