【问题标题】:Ant can't find classpath classesAnt 找不到类路径类
【发布时间】:2016-07-13 20:33:43
【问题描述】:

所以我正在扩展我公司的 ant 构建脚本,以添加在某些情况下我们想要构建的特殊模块。我编写了一个 ant 脚本,它指向我知道我们代码库其余部分的编译类文件所在的位置,因为它们在构建过程的早期就被编译了。我 100% 确定文件位于此位置。

但是,每当我尝试编译此模块时,类路径引用都看不到这些类,并且会收到一堆“包不存在”和“找不到符号”错误。

我似乎无法弄清楚我做错了什么。希望在这里得到帮助。

这是我的构建脚本代码:

<property name="classpath" value="${dir.dev}/out/production/Main"
<path id="pfClasspath">
    <fileset dir="${classpath}">
        <include name="**/*.class"/>
    </fileset>
    <fileset dir="${dir.dev.lib}">
        <include name="**/*.jar" />
    </fileset>
    <fileset file="${lib.json}" /> <!-- TODO try removing this -->
</path>
<target name="compile" depends="prepare">
    <javac source="1.7" classpathref="pfClasspath" srcdir="${dir.project}/src" destdir="${dir.project.build.classes}" />
</target>

“类路径”属性指向的目录 100% 包含项目其余部分的所有类文件。该级别相当于源端的“src”目录,其中直接是 com/companyName/etc... 文件夹。

我的代码包含对在此位置编译的类的引用。然而蚂蚁没有找到它们。有什么帮助吗?

【问题讨论】:

  • 准备做什么?
  • 你没有关闭你的属性标签。
  • 当我复制它时,这可能是一个错误,该标签在原始文件中已关闭。不过很好。

标签: java ant


【解决方案1】:

试试

<path id="pfClasspath">
    <pathelement path="${classpath}" />
    ...
</path>

相反。指定类路径并不意味着指定类路径中的每个类文件,当您使用 &lt;fileset&gt; 定义 &lt;path&gt; 元素时,您会这样做。

【讨论】:

  • 所以 pfClasspath 指向的目录中有很多类。这是一个巨大的目录层次结构,可能包含数百个 .class 文件。那么 pathelement 还会起作用吗?
  • @user2223059:是的,我很确定它会起作用。底层会发生什么,编译目标会像这样调用javacjavac -cp ${dir.dev}/out/production/Main;${dir.dev.lib}/MyJar1.jar;${dir.dev.lib}/MyJar2.j‌​ar -sourcepath ...。每当javac 找到像myapp.MyClass 这样的符号时,它将首先搜索相对于${dir.dev}/out/production/Main 的文件myapp/MyClass.class,然后在${dir.dev.lib}/MyJar1.jar 中搜索,最后在${dir.dev.lib}/MyJar2.jar 中搜索。不管目录${dir.dev}/out/production/Main中有多少文件。
猜你喜欢
  • 1970-01-01
  • 2020-07-25
  • 2010-10-30
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 2019-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多