Java 无法在ANT中编译,但可以在Eclipse中编译
我第一次使用ANT并开发了一个淡化版的KnightsTour程序。我第一次在Eclipse中开发时没有遇到任何问题,我正在尝试用ANT进行编译,但没有成功。我没有对这两个类做任何更改,但是JAVAC编译器声明我的一个可用类已经被复制 这是编译器错误Java 无法在ANT中编译,但可以在Eclipse中编译,java,ant,javac,Java,Ant,Javac,我第一次使用ANT并开发了一个淡化版的KnightsTour程序。我第一次在Eclipse中开发时没有遇到任何问题,我正在尝试用ANT进行编译,但没有成功。我没有对这两个类做任何更改,但是JAVAC编译器声明我的一个可用类已经被复制 这是编译器错误 [javac] C:\Users\Admiral Sudoku\Documents\Eduboard\Ken Ton\build.xml:19: war ning: 'includeantruntime' was not set, defau
[javac] C:\Users\Admiral Sudoku\Documents\Eduboard\Ken Ton\build.xml:19: war
ning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; se
t to false for repeatable builds
[javac] Compiling 2 source files to C:\Users\Admiral Sudoku\Documents\Eduboa
rd\Ken Ton\build\classes
[javac] C:\Users\Admiral Sudoku\Documents\Eduboard\Ken Ton\src\Knightstour\A
vailableLocations.java:1: error: duplicate class: AvailableLocations
[javac] public class AvailableLocations {
[javac] ^
[javac] C:\Users\Admiral Sudoku\Documents\Eduboard\Ken Ton\src\Knightstour\m
ainclass.java:6: error: cannot access AvailableLocations
[javac] public static Vector checkmovesavailable (int[][] board, Availabl
eLocations knightlocation, int x, int y)
[javac] ^
[javac] bad source file: C:\Users\Admiral Sudoku\Documents\Eduboard\Ken To
n\src\Knightstour\AvailableLocations.java
[javac] file does not contain class Knightstour.AvailableLocations
[javac] Please remove or make sure it appears in the correct subdirector
y of the sourcepath.
这是AvailableLocations课程
public class AvailableLocations {
int x;
int y;
public AvailableLocations(int x_coord, int y_coord)
{
x = x_coord;
y = y_coord;
}
}
这是我的主要课程:
package Knightstour;
import java.util.*;
public class mainclass{
public static Vector checkmovesavailable (int[][] board, AvailableLocations knightlocation, int x, int y)
{
Vector availablemoves = new Vector();
if (knightlocation.x - 2 >= 0)
{
if (knightlocation.y + 1 < y)
{
if (board[knightlocation.x - 2][knightlocation.y + 1] == 0)
{
AvailableLocations location = new AvailableLocations(knightlocation.x- 2, knightlocation.y+ 1 );
availablemoves.addElement(location);
}
}
if (knightlocation.y - 1 >= 0)
{
if (board[knightlocation.x - 2][knightlocation.y - 1] == 0)
{
AvailableLocations location = new AvailableLocations(knightlocation.x - 2, knightlocation.y - 1 );
availablemoves.addElement(location);
}
}
}
if (knightlocation.x + 2 < x)
{
if (knightlocation.y + 1 < y)
{
if (board[knightlocation.x + 2][knightlocation.y + 1] == 0)
{
AvailableLocations location = new AvailableLocations(knightlocation.x+ 2, knightlocation.y+ 1 );
availablemoves.addElement(location);
}
}
if (knightlocation.y - 1 >= 0)
{
if (board[knightlocation.x + 2][knightlocation.y - 1] == 0)
{
AvailableLocations location = new AvailableLocations(knightlocation.x + 2, knightlocation.y- 1 );
availablemoves.addElement(location);
}
}
}
if (knightlocation.y - 2 >= 0)
{
if (knightlocation.x+ 1 < x)
{
if (board[knightlocation.x+ 1][knightlocation.y - 2] == 0)
{
AvailableLocations location = new AvailableLocations(knightlocation.x + 1, knightlocation.y- 2 );
availablemoves.addElement(location);
}
}
if (knightlocation.x - 1 >= 0)
{
if (board[knightlocation.x- 1][knightlocation.y - 2] == 0)
{
AvailableLocations location = new AvailableLocations(knightlocation.x- 1, knightlocation.y - 2 );
availablemoves.addElement(location);
}
}
}
if (knightlocation.y + 2 < y)
{
if (knightlocation.x + 1 < x)
{
if (board[knightlocation.x+ 1][knightlocation.y + 2] == 0)
{
AvailableLocations location = new AvailableLocations(knightlocation.x + 1, knightlocation.y + 2 );
availablemoves.addElement(location);
}
}
if (knightlocation.x - 1 >= 0)
{
if (board[knightlocation.x - 1][knightlocation.y + 2] == 0)
{
AvailableLocations location = new AvailableLocations(knightlocation.x- 1, knightlocation.y + 2 );
availablemoves.addElement(location);
}
}
}
return availablemoves;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int x = Integer.parseInt(args[0]);
int y = Integer.parseInt(args[1]);
int maxattempts = Integer.parseInt(args[2]);
int [][] board = new int[x][y];
AvailableLocations knightlocation = new AvailableLocations(0, 0);
board [0][0] = 1;
Vector locationsvisited = new Vector();
locationsvisited.addElement(knightlocation);
int i = 0;
while (i <= maxattempts)
{
i++;
Vector movesavailable = checkmovesavailable(board, knightlocation,x, y);
int numofmovesavailable = movesavailable.size();
if (numofmovesavailable == 0)
{
break;
}
Random rand = new Random();
int selectmove = rand.nextInt(numofmovesavailable - 1 + 1) + 1;
knightlocation = (AvailableLocations) movesavailable.elementAt(selectmove -1);
board[knightlocation.x][knightlocation.y] = i + 1;
if (i == x *y)
{
break;
}
}
for(int k = 0; k<x; k++)
{
for(int j = 0; j<y; j++)
{
if (board[k][j] == 0)
{
System.out.print("x ");
}else{
System.out.print(board[k][j]);
System.out.print(" ");
}
}
System.out.print("\n");
}
}
}
包骑士;
导入java.util.*;
公共类主类{
公共静态向量检查移动可用(int[][]板,可用位置knightlocation,int x,int y)
{
Vector availablemoves=新向量();
如果(knightlocation.x-2>=0)
{
if(骑士位置y+1=0)
{
如果(board[knightlocation.x-2][knightlocation.y-1]==0)
{
AvailableLocations=新的AvailableLocations(knightlocation.x-2,knightlocation.y-1);
可用移动。附加元素(位置);
}
}
}
if(骑士位置x+2=0)
{
如果(板[knightlocation.x+2][knightlocation.y-1]==0)
{
可用位置=新的可用位置(knightlocation.x+2,knightlocation.y-1);
可用移动。附加元素(位置);
}
}
}
如果(knightlocation.y-2>=0)
{
if(骑士位置x+1=0)
{
如果(board[knightlocation.x-1][knightlocation.y-2]==0)
{
AvailableLocations=新的AvailableLocations(knightlocation.x-1,knightlocation.y-2);
可用移动。附加元素(位置);
}
}
}
if(骑士位置y+2=0)
{
如果(板[knightlocation.x-1][knightlocation.y+2]==0)
{
可用位置=新的可用位置(knightlocation.x-1,knightlocation.y+2);
可用移动。附加元素(位置);
}
}
}
返回可用的活动;
}
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
intx=Integer.parseInt(args[0]);
int y=Integer.parseInt(args[1]);
int-maxtures=Integer.parseInt(args[2]);
int[][]板=新int[x][y];
AvailableLocations knightlocation=新的AvailableLocations(0,0);
董事会[0][0]=1;
向量位置visited=新向量();
位置查看。添加元素(骑士位置);
int i=0;
虽然(i您已将AvailableLocations类放置在与mainclass相同的目录中,但AvailableLocations.java似乎缺少一条package
语句。请尝试向AvailableLocations添加package Knightstour;
。我们需要您的ANT build.xml的详细信息
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir" value="${build.dir}/jar"/>
<property name="main-class" value="Knightstour.mainclass"/>
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}"/>
</target>
<target name="jar" depends="compile">
<mkdir dir="${jar.dir}"/>
<jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
<manifest>
<attribute name="Main-Class" value="${main-class}"/>
</manifest>
</jar>
</target>
<target name="run" depends="jar">
<java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/>
</target>
<target name="clean-build" depends="clean,jar"/>
<target name="main" depends="clean,run"/>