解魔方的机器人攻略15 – 安装 Eclipse

在远古时代,程序员们通常用写字板来编写Java程序,然后用Javac.exe和Java.exe来编译和执行。对于NXT来说,对应的命令是Nxjc和Nxj。写字板的好处是速度飞快,不用安装。据说直到现在还有一些固执的代码狂人会用写字板开发软件,顺便用CPU来爆玉米花。但是对于大多数开发人员来说,选一个好用的IDE(Integrated Development Environment)是非常重要的。

IDE就是传说中的开发环境,比如我们常用的VS2008,Eclipse等等。它可以帮助你记忆类名和函数名,减少代码的输入量,避免拼写错误,高亮显示不同的代码段,还可以中断和调试。
这里大力推荐的NXT开发环境是IBM的Eclipse:

Eclipse开发环境

Eclipse开发环境

安装Eclipse:
1,从www.eclipse.org下载最新版的Eclipse,我用的是3.4版本,可能有点老了
2,Eclipse是不需要安装的,直接把所有文件解压到一个目录。注意这个目录最好不要包含空格,而且安装之后最好不要随意移动
3,双击eclipse.exe就可以运行了,最好在桌面上创建一个快捷方式,比较方便
4,第一次运行Eclipse的时候,会有一些教程信息,有兴趣的可以看看

为Lejos配置Eclipse:
1,创建一个新的工程。选择File > New > Project打开下图所示的新工程选项窗口:

新建工程

新建工程

选择Java Project并单击Next

2,输入你的工程名称,注意这里只能是英文。Eclipse会用这个名字创建一个新的目录:

输入工程名字

输入工程名字

3,设置ClassPath
单击菜单中的 Project > Properties。在左侧选择“Java Build Path”,然后在右侧选择“Libraries”
这时候点击“Add External JARs…”,打开之前安装Lejos的目录,选中classes.jar文件。设置完成的结果如下图:

设置Class Path

设置Class Path

4,接下来我们在Eclipse里面加上几个按钮,帮助我们编译和下载代码
选择菜单中的“Run > External Tools > External Tools Configuations”
先点一下“Program”,然后单击左上角的“New Launch Configuration”创建新的外部工具

添加外部工具

添加外部工具

工具1:编译工具(NXJ compile tool)
location -> D:\lejos_nxj\bin\nxjc.bat (请换成自己的目录)
Working Directory -> ${project_loc}
Arguments-> ${java_type_name}.java

工具2:下载工具(Download To NXJ)
location -> D:\lejos_nxj\bin\nxj.bat
Working Directory -> ${project_loc}
Arguments-> ${java_type_name}

工具3:查看工具(NXT Explorer)
location -> D:\lejos_nxj\bin\nxjbrowse.bat
Working Directory -> D:\lejos_nxj\bin
Arguments-> 空的

5,现在把这三个工具添加到工具栏
点击工具栏中向下的箭头,选择“Organize Favorites”。在打开的窗口中,把刚才添加的三个工具全部加进来。

 

 

 

 

 

添加快捷操作按钮

添加快捷操作按钮

 

6. 验证Eclipse环境搭建是否成功:
在新建的工程中添加一个MyFirstNxtProject.java文件,然后输入以下代码:

import lejos.nxt.*;
public class MyFirstNxtProject {
    public static void main (String[] arg)
        throws InterruptedException
    {
        do
        {
            String s = "test string";
            LCD.clear();
            LCD.drawInt( (int)(Runtime.getRuntime().freeMemory()),0,0);
            LCD.refresh();
            Thread.sleep(10);
        } while (true);
    }
}

完成后单击工具中的NXJ Compile进行编译,正常情况下不会出现任何错误,表示编译成功。
这时候打开NXT的电源,用USB线连接到电脑,听到“嘟”的一声,表示USB设备已经就绪。
这时候单击工具中的NXJ Download,把编译好的代码下载到NXT内部。
现在在NXT上操作,用按钮选中MyFirstNxtProject并执行,该程序会显示目前NXT可用的内存数。



对 “解魔方的机器人攻略15 – 安装 Eclipse” 的 45 条 评论

  1. 开心凡人 说:

    Eclipse很喜欢

  2. shihko 说:

    个人更喜欢用VIM。
    windows下就用GVIM。

  3. xiaogang 说:

    最近在学JAVA,收藏了

  4. Joker 说:

    一直想学点嵌入式,用单片机搞个飞机坦克之类的东西…Symbian开源了以后或许有机会可以实现,目前是Symbian程序员刚入门..博主做的东西小有启发:)

  5. 熊仔 说:

    博主的机器人很强啊。
    大二的时候曾经组织过团队完成过几个机器人,没用完成度这么高的套件,而是纯手工打造,花了不少钱,但结果很令人振奋。
    博主的文章让我重回到那个激情燃烧的时代了,怀念ing。

  6. becky 说:

    看了这个乐高机器人,很感兴趣,想买一个来好好玩玩。
    NXT只有3个伺服电机,ARM7的处理器,我想知道还有没有像NXT这样的机器人组件产品。
    动力老男孩应该对这方面的资料比较了解吧,还望赐教。

  7. 5come5 说:

    不错不错,我想起了当年电子设计大赛的情景

  8. Max 说:

    兄弟,我知道你是创新的,从你的说法来看,你应该是北京分公司的,我是新加坡总部的,不过刚刚自己辞职回深圳了。看到你的作品,不错,不错,恭喜一个。NXT自由度还可以再发挥下。米国现在有新版,你可以关注下,再次恭喜下。

  9. Xiaoding 说:

    麻烦讲一下颜色传感器的问题。。
    一直为传感器的数据抖动和错误数据所困扰,不知该如何避免它。。

    • to:xiaoding
      乐高的传感器确实有数据抖动的问题,环境光线对颜色传感器读数影响非常大,这个需要用算法弥补,我在后面的攻略里会讲

  10. ZKN 说:

    不错~虽然不一定要做魔方机器人..但从中学到的知识也可以在其他地方用到

    题外话..我觉得网站的速度不错..可否推荐下是哪个空间商?

  11. 说:

    顶一个。写的帖子很有意思,有些话还很有道理。

  12. becky 说:

    8L的max,你好!你说米国的NXT有了新版,请问这个新版是啥啊?难道是9797+9684吗?

  13. becky 说:

    8L的max,你好!你说米国的NXT有了新版,请问这个新版是啥啊?难道是9797+9684吗?
    —————-
    自问自答吧,所谓的新版,原来是号称NXT 2.0的8547,将8527中的光电传感器升级为颜色传感器。
    看来教育版的9797也要升级了,希望能快点,我准备购买9797+9684,要是9797有升级版的话,看来只有先等等了。

  14. becky 说:

    说错了,是9797+9648

  15. 人因梦想而伟大 说:

    你好,我就直说,我想和你做朋友。当然我也要弄ai,没办法,你是爱好有实力,我是爱好没实力,所以就想和你交流一些想法,看看能不能有所互相的提高。我的qq:315039973。当然你要是不用qq。请你告诉我我怎么联系你,从网络上。

  16. btyytt 说:

    新年快乐!

    C#部分在哪里?

  17. 庸才乱世 说:

    嗯 以前搞 java 时 Eclipse 也是我的最爱 怀念~

  18. 不吃早餐的猫 说:

    eclipse可不是IBM的喔~~

  19. 休息的海 说:

    刚学java不久,最近上课要上 LeJos,看了相关资料,急忙装了个,Eclipse,又把它给转成了日语版的,因为英语太差,看不懂,结果很多资料都是用英语教,又要转回来了,悲剧啊

  20. 忧郁飞花 说:

    楼主,我下的最新的eclipse..但是不太会用。。研究了很久都没有找到往project里面添加.java文件的方法。。唯一发现就是要先建package然后在package里面建class..这样会出现一个.java文件。。然后我往里面输了上面的代码。。但是根据上面的用eclipse外接nxj complier编译的时候会出错

  21. 忧郁飞花 说:

    刚发现不用那个package就可以编译了。。但是我还是不知道如何向project中直接添加.java文件。。我是先建了package和class..然后把class的那个.java文件拖到了project的根目录下。。。

  22. Bennny 说:

    工具1:编译工具(NXJ compile tool)
    location -> D:\lejos_nxj\bin\nxjc.bat (请换成自己的目录)
    Working Directory -> ${project_loc}
    Arguments-> ${java_type_name}.java

    工具2:下载工具(Download To NXJ)
    location -> D:\lejos_nxj\bin\nxj.bat
    Working Directory -> ${project_loc}
    Arguments-> ${java_type_name}

    问一下 这部分不行啊 compile 报错 说”Variable references empty selection: ${project_loc}”
    同样 download也有这个问题啊

    • 如果${project_loc}不能用,你就把它换成你的项目路径,这个东西其实就是个快捷方式,你在dos下,直接输入 nxjc.bat d:/myproject/abc.nxj,是一样的效果

  23. Bennny 说:

    ‘javac’ 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    又有这个问题了…

  24. Bennny 说:

    另:Win7

  25. wlreg 说:

    3000大洋可以做这个机器人我觉得也不错呀。。。不过为什么老男孩筒子会想到这个创意的呢,呢

  26. xzzwzj 说:

    请问,如何新建的工程中添加一个MyFirstNxtProject.java文件?
    还有,说明书的那个问题谢谢你。

    • xzzwzj 说:

      如果那个NXJ Compile编译成功了,会不会在console中出现“javac: 无效的标志: NXJ
      用法:javac ···”等字样?

  27. 风雪冲 说:

    请教一下,在这期攻略中的第四步添加按钮时
    创建“NXJ DOWNLOAD”出现问题 Variable references empty selection: ${java_type_name}
    这怎么解决?
    急急急急急!!!

    • 你直接试过命令行操作吗?Eclipse只是一个IDE环境,它的作用就是给你一个写代码的地方,另外提供几个操作的快捷方式(按钮)
      所以你可以先用写字板写一小段程序,然后直接在命令行用nxj执行,看看会不会出错。

      • 风雪冲 说:

        (帮忙分析下怎么回事)命令行操作如下:Microsoft Windows XP [版本 5.1.2600]
        (C) 版权所有 1985-2001 Microsoft Corp.

        C:\Documents and Settings\Administrator>cd/d C:\ProgramFiles\eclipse\workspace\s
        amples\src\org\lejos\sample\tune

        C:\ProgramFiles\eclipse\workspace\samples\src\org\lejos\sample\tune>nxjc tune.ja
        va
        C:\ProgramFiles\eclipse\workspace\samples\src\org\lejos\sample\tune>nxjlink -v T
        une -o Tune.nxj
        js.tinyvm.TinyVMException: found class org.lejos.sample.tune.Tune instead of req
        uested Tune
        at js.tinyvm.ClassRecord.getClassRecord(ClassRecord.java:876)
        at js.tinyvm.Binary.processClasses(Binary.java:362)
        at js.tinyvm.Binary.createFromClosureOf(Binary.java:309)
        at js.tinyvm.TinyVMTool.link(TinyVMTool.java:97)
        at js.tinyvm.TinyVMTool.link(TinyVMTool.java:48)
        at lejos.pc.tools.NXJLink.start(NXJLink.java:134)
        at lejos.pc.tools.NXJLink.run(NXJLink.java:101)
        at lejos.pc.tools.NXJLink.start(NXJLink.java:33)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
        java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
        sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at lejos.pc.tools.ToolStarter.startTool(ToolStarter.java:31)
        at lejos.pc.tools.NXJLink.main(NXJLink.java:28)
        C:\ProgramFiles\eclipse\workspace\samples\src\org\lejos\sample\tune>nxjupload Tu
        ne.nxj
        Found NXT: NXT2 001653083F48
        leJOS NXJ> Upload successful in 141 milliseconds
        C:\ProgramFiles\eclipse\workspace\samples\src\org\lejos\sample\tune>
        C:\ProgramFiles\eclipse\workspace\samples\src\org\lejos\sample\tune>nxj -r Tune

        leJOS NXJ> Linking…
        js.tinyvm.TinyVMException: found class org.lejos.sample.tune.Tune instead of req
        uested Tune
        at js.tinyvm.ClassRecord.getClassRecord(ClassRecord.java:876)
        at js.tinyvm.Binary.processClasses(Binary.java:362)
        at js.tinyvm.Binary.createFromClosureOf(Binary.java:309)
        at js.tinyvm.TinyVMTool.link(TinyVMTool.java:97)
        at js.tinyvm.TinyVMTool.link(TinyVMTool.java:48)
        at lejos.pc.tools.NXJLink.start(NXJLink.java:134)
        at lejos.pc.tools.NXJLinkAndUpload.run(NXJLinkAndUpload.java:108)
        at lejos.pc.tools.NXJLinkAndUpload.start(NXJLinkAndUpload.java:49)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
        java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
        sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at lejos.pc.tools.ToolStarter.startTool(ToolStarter.java:31)
        at lejos.pc.tools.NXJLinkAndUpload.main(NXJLinkAndUpload.java:42)
        C:\ProgramFiles\eclipse\workspace\samples\src\org\lejos\sample\tune>
        在NXT上无法执行啊

  28. 风雪冲 说:

    工具2:下载工具(Download To NXJ)
    location -> C:\ProgramFiles\leJOS_NXJ\bin\nxj.bat
    Working Directory -> C:\ProgramFiles\leJOS_NXJ\eclipse\workspace
    Arguments-> ${java_type_name}
    出现了Variable references empty selection: ${java_type_name}
    ??

  29. 嘻嘻 说:

    这时候单击工具中的NXJ Download,把编译好的代码下载到NXT内部。怎么下载到内部

  30. 嘻嘻 说:

    1. java.io.IOException: OPEN WRITE failed
    at lejos.nxt.remote.NXTCommand.openWrite(NXTCommand.java:179)
    at lejos.nxt.remote.NXTCommand.uploadFile(NXTCommand.java:450)
    。。。
    NXJ Download 时发生这样的问题是源于什么?

    2. 下载到NXT中成功后,在NXT中找不到上载的程序,无法运行?

    急需。。。
    谢谢。。。

    • IOException表示没有找到输入输出的通道,所以应该是连接错误,非常大的概率是驱动没有装好。
      你是用蓝牙连接还是用USB连接?
      传输不成功,当然NXT里就找不到啦

发表评论

可以使用下列 XHTML 标签:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>