【问题标题】:ant build gives package does not exist errorant build 给出包不存在错误
【发布时间】:2017-01-22 05:28:26
【问题描述】:

我在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>

提前致谢

【问题讨论】:

  • 请显示完整的错误消息(通过编辑不在评论中的问题)和失败的目标。你的 Java 文件布局是什么?您的主类是否位于类路径的根目录?是否有一个子目录Assign2 包含类MovieDescription
  • 我的文件夹为 Assign2,然后有一个包含 MovieDescription.java、MovieLibrary.java 和 main.java 的 src 文件夹。我更正了问题并添加了错误
  • 您应该向我们展示您的 build.xml 的相关部分。失败的目标和相关属性。如果您的 build.xml 不是太长,您可以包含整个文件。并且不要忘记提及 build.xml 的路径。没有这些信息,就不可能提供帮助。
  • 我继续添加了 build.xml 文件及其路径。谢谢

标签: java ant build.xml


【解决方案1】:

您实际上没有任何软件包。您所有的 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 命名约定,对于包和变量,您应该只使用以小写字母开头的名称。类应始终以大写字母开头。

【讨论】:

    猜你喜欢
    • 2010-12-20
    • 2017-08-30
    • 2019-01-29
    • 2013-10-13
    • 2017-04-18
    • 2016-01-03
    • 2015-02-06
    • 1970-01-01
    • 2016-11-13
    相关资源
    最近更新 更多