我试图在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设置为什么。有人可以举个例子吗?
答案 0 :(得分:1)
编译目标仅引用libraries.path
作为类路径:
<classpath refid="libraries.path"/>
确保正确的jar依赖关系位于该路径中(意思是lib.dir
)。
OP user2971198确认in the comments:
我只是忘记了(尽管从未提及过)用于构建首先使用ant脚本导入的项目 这就是为什么它找不到任何jar [(
lib.dir
)]。