ant build给出包不存在的错误

时间:2017-01-22 05:28:26

标签: java ant build.xml

我在linux上使用ant build函数来编译java程序。我有三个java文件,我正在尝试将它们导入到我的main.java文件中,但是我收到错误说

/home/ggaz1/Ser321/Assigns/Assign2/src/main.java:4 error: package Assign2.src does not exist 

这是build.xml文件。它的路径是

/home/ggaz1/Ser321/Assigns/Assign2

<?xml version="1.0"?>
<project name="Movie Library."
         default="targets" basedir="."
         xmlns:dn="antlib:org.apache.ant.dotnet"
         xmlns="antlib:org.apache.tools.ant"
         xmlns:cpptasks="antlib:net.sf.antcontrib.cpptasks">

   <property name="src.dir" value="src"/>
   <property name="build" value="classes"/>
   <property environment="env"/>
   <property name="user" value="${env.USERNAME}"/>

   <target name="targets">
      <echo message="Targets are clean, prepare, build, execute, and targets"/>
   </target>

   <path id="compile.classpath">
      <pathelement location="${build}"/>
   </path>

   <target name="prepare">
      <mkdir dir="${build}" />
   </target>

   <target name="clean">
      <delete dir="${build}" failonerror="false"/>
   </target>

   <target name="build" depends="prepare">
      <javac srcdir="${src.dir}"
             includeantruntime="false"
             destdir="${build}">
        <src path="src"/>
         <classpath refid="compile.classpath"/>
      </javac>
   </target>

   <target name="execute.java" depends="build"
           description="Run the program">
         <echo message="command line execute: java -cp classes main, MovieDescription, MovieLibrary" />
         <java classname="main" fork="yes">
           <classpath refid="compile.classpath"/>
         </java>
   </target>
</project>

提前致谢

1 个答案:

答案 0 :(得分:0)

你实际上没有任何包裹。您的所有Java源代码文件都位于src文件夹中。 src文件夹是包的根目录。如果你想要一个包assign2,你必须在src中创建一个名为assign2的文件夹,你应该将属于assign2包的所有Java文件放到该文件夹​​中。

假设您的Main类本身没有包,而您的课程MovieDescriptionMovieLibrary位于包assign2中。

然后您的文件布局应如下所示:

--src
   |
   +---- Main.java
   |
   +---- assign2
            |
            +---- MovieDescription.java
            |
            +---- MovieLibrary.java

然后Main.java没有任何包声明。

MovieDescription.javaMovieLibrary.java包声明应该是:

package assign2;
[...]

Main.java中的导入如下:

import assign2.MovieLibrary;
import assign2.MovieDescription;

也许你应该看一下Oracle Java Tutorial, Lesson: Packages

根据Java命名约定,您应该只使用以小写字母开头的包和变量名称。类应始终以大写字母开头。