Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在ANT中编译,但可以在Eclipse中编译_Java_Ant_Javac - Fatal编程技术网

Java 无法在ANT中编译,但可以在Eclipse中编译

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

我第一次使用ANT并开发了一个淡化版的KnightsTour程序。我第一次在Eclipse中开发时没有遇到任何问题,我正在尝试用ANT进行编译,但没有成功。我没有对这两个类做任何更改,但是JAVAC编译器声明我的一个可用类已经被复制

这是编译器错误

    [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"/>