java - 包/路径/导入逻辑问题

标签 java linux ant debian

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

我提供了强制要求的整体目录结构以及强制的源目录结构的屏幕截图。

我们专门在结构中包含一个源文件:

enter image description here

考虑到这一点,我们应该将源文件打包为 ser321.assign3.kajefr1.client。我已经尝试过将其作为相对路径(我认为这没有意义,因为本地路径不包含类包路径中所需的内容)和绝对路径。但是,我的类(class)似乎无法互相识别。我收到以下错误。

enter image description here

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

构建.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>

消息.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 文件正在构建“classes”文件,但无法将任何内容编译到其中。

最佳答案

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

关于java - 包/路径/导入逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57946001/

相关文章:

java - Grails 2.0.4 打开 zip 文件时出错或缺少 Springloaded 的 JAR list

python - 如何在没有 root 的情况下在 Python 中挂载共享驱动器?

tomcat - 使用 Ant 部署到 Geronimo

java - 使用 ANT 将参数传递给 java 程序

java - Java 中的日期选择

java - 自定义字体为 Android 中的某些字母组合提供了不正确的字形

linux - Linux + windows + MAC下如何获取系统默认网关地址

用于获取内存和文件句柄计数的 C API

unit-testing - PHPUnit 本身的错误

java - 用java的图形类画直线