打包/路径/导入逻辑问题

时间:2019-09-15 16:21:51

标签: java linux ant debian

我在一个家庭作业项目中遇到了一个问题,在该项目中我们正在创建类似MVC的类包。使用Debian 9.x.x虚拟盒,我们将使用ant文件来构建/编译/执行。

我提供了强制性的总体目录结构以及强制性的源目录结构的屏幕快照。

我们专门在结构中具有一个源文件:

enter image description here

考虑到这一点,我们应该将源文件打包为ser321.assign3.kajeffr1.client。我已经尝试将其作为相对对象(因为本地路径不包括类包路径中所需的内容,所以我认为这没有任何意义),并且也可以作为绝对对象。但是,我的班级似乎互不认识。我收到以下错误。

enter image description here

据我了解,包路径并不重要,因为它可以编译到所需位置。我尝试从其他类导入,但似乎没有帮助,更不用说它们都在同一目录中,所以我不知道为什么Message似乎对其他类不可见。我包括了build.xml和源文件的开头,因为似乎我的错误在于打包/导入,但是如果需要其余代码,我也可以提供。

build.xml:

    <project name="Ser321 Spring 2019 Assign2" default="targets" basedir=".">
    <!-- set global properties for this build -->

    <property name="src" value="./src" />
    <property name="build" value="./classes" />
    <property name="docs" value="./docs" />
    <property name="lib" value="./lib" />
    <property name="userId" value="kajeffr1" />
    <property name="parentDir" value="${user.dir}${file.separator}" />
    <path id="compile.classpath">
    <pathelement location="${build}/"/>
    <fileset dir="${lib}">
    <include name="*.jar"/>
    </fileset>
    </path>
    <target name="targets">
       <echo message="targets are clean, prepare, compile, and execute. "/>
    </target>

    <target name="prepare">
    <!-- Create the time stamp -->
    <tstamp/>
    <!-- Create the build directory structure used by compile -->
    <echo message="home defined as: ${home}" />
    <mkdir dir="${build}" />
    </target>
    <target name="compile" depends="prepare"
    description="Compile Java sources">
    <javac srcdir="${src}/client"
    includeantruntime="false"
    destdir="${build}">
    <classpath refid="compile.classpath"/>
    </javac>
    </target>
    <target name="execute" depends="compile"
    description="execute the execute mail client">
    <java classname="ser321.assign2.kajeffr1.client.MessageController"
    fork="yes">
    <arg value="kajeffr1"/> 
    <arg value="localhost:8080"/> 
    <classpath refid="compile.classpath"/>
    </java>
    </target>

    <target name="clean">
    <!-- Delete the ${build} and ${docs} directory trees -->
    <delete dir="${build}" />
    </target>
    </project>

Message.java:

        package ser321.assign2.kajeffr1.client;

        import java.io.Serializable;
        import org.json.JSONObject;

        public class Message implements Serializable { ... }

MessageLibary.java:

    package ser321.assign2.kajeffr1.src.client;

    public interface MessageLibrary { ... }

MessageLibraryImpl.java:

    package ser321.assign2.kajeffr1.src.client;

    import org.json.*;
    import java.io.*;
    import java.util.*;

    public class MessageLibraryImpl implements Serializable, MessageLibrary { ... }

MessageController.java:

    package ser321.assign2.kajeffr1.src.client;

    //other java imports

    public class MessageController extends MessageGui //MessageGUI is provided in jar files { ... }

ant文件正在构建“类”文件,然后无法将任何内容编译到其中。

1 个答案:

答案 0 :(得分:0)

我只是想念“ .src”。在我的Message.java中。我不敢相信我一定错过了多少次。