Lego Mindstorms ev3 leJOS在编译期间查找库

时间:2013-12-27 06:00:19

标签: java eclipse git ant compilation

我试图在eclipse中设置leJOS,并从git导入所有库,但是我在使用ant build进行编译时遇到了问题。这是我的构建文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="SimonSais" basedir="." default="copy">
<property name="source.dir"     value="src"/>
<property name="lib.dir"        value="../ev3/ev3classes"/>
<property name="class.dir"      value="build"/>
<property name="jar.dir"        value="dist"/>
<property name="main-class"     value="SimonSais"/>
<property name="lejos.home"     value="/home/root/lejos"/>
<property name="ev3.host"       value="10.0.1.1"/>

<path id="libraries.path">    
    <fileset dir="${lib.dir}">
        <include name="*.jar"/>
    </fileset>
</path>

<target name="clean" description="delete old files">
    <delete dir="${class.dir}"/>
    <delete dir="${jar.dir}"/>
</target>

<target name="compile" description="build class files" depends="clean">
    <mkdir dir="${class.dir}"/>
    <javac srcdir="${source.dir}" destdir="${class.dir}">
        <classpath refid="libraries.path"/>
    </javac>
</target>

<target name="jar" depends="compile">
    <mkdir dir="${jar.dir}"/>
    <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${class.dir}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
            <attribute name="Class-Path" value="${lejos.home}/lib/ev3classes.jar ${lejos.home}/libjna/usr/share/java/jna.jar"/>
        </manifest>
    </jar>  
</target>

<target name="copy" depends="jar">
    <scp todir="root:@${ev3.host}:/home/lejos/programs/" trust="true">
        <fileset file="${jar.dir}/${ant.project.name}.jar"/>
    </scp>
</target>

但是当我尝试运行时,sais ..ev3 / ev3classes并不存在。这是由工作空间中引用的类引起的,但实际上并未在那里复制。不过,这就是它说的方式。

他们还说你可能需要更改“lib.dir”,但我并不确切地知道在哪里设置它。我尝试将它设置为类实际所在的位置(C:\ Users \ soc0001 \ git \ ev3 \ ev3classes),但它给出了编译错误,说它无法找到包:

Compiling 1 source file to D:\School\Programs\Lego Mindstorms\SimonSais\build
[javac] D:\School\Programs\Lego Mindstorms\SimonSais\src\SimonSais.java:1: error: package lejos.hardware does not exist
[javac] import lejos.hardware.Button;
[javac]                      ^
[javac] D:\School\Programs\Lego Mindstorms\SimonSais\src\SimonSais.java:2: error: package lejos.hardware.lcd does not exist
[javac] import lejos.hardware.lcd.LCD;
[javac]                          ^
[javac] D:\School\Programs\Lego Mindstorms\SimonSais\src\SimonSais.java:7: error: cannot find symbol
[javac]         LCD.clear();
[javac]         ^
[javac]   symbol:   variable LCD
[javac]   location: class SimonSais
[javac] D:\School\Programs\Lego Mindstorms\SimonSais\src\SimonSais.java:8: error: cannot find symbol
[javac]         LCD.drawString("First EV3 Program", 0, 5);
[javac]         ^
[javac]   symbol:   variable LCD
[javac]   location: class SimonSais
[javac] D:\School\Programs\Lego Mindstorms\SimonSais\src\SimonSais.java:9: error: cannot find symbol
[javac]         Button.waitForAnyPress();
[javac]         ^
[javac]   symbol:   variable Button
[javac]   location: class SimonSais
[javac] D:\School\Programs\Lego Mindstorms\SimonSais\src\SimonSais.java:10: error: cannot finsymbol
[javac]         LCD.clear();
[javac]         ^
[javac]   symbol:   variable LCD
[javac]   location: class SimonSais
[javac] D:\School\Programs\Lego Mindstorms\SimonSais\src\SimonSais.java:11: error: cannot find symbol
[javac]         LCD.refresh();
[javac]         ^
[javac]   symbol:   variable LCD
[javac]   location: class SimonSais

我不确定构建文件究竟是什么样子,以及将lib.dir设置为什么。有人可以举个例子吗?

1 个答案:

答案 0 :(得分:1)

编译目标仅引用libraries.path作为类路径:

<classpath refid="libraries.path"/>

确保正确的jar依赖关系位于该路径中(意思是lib.dir)。

OP user2971198确认in the comments

  

我只是忘记了(尽管从未提及过)用于构建首先使用ant脚本导入的项目   这就是为什么它找不到任何jar [(lib.dir)]。