尽管所需的jar文件位于类路径上,但javac
目标中的compile
任务仍然失败。谁能帮我弄清楚为什么会这样?
导致以下错误,因为无法识别IOUtils.lineIterator()
。但是, commons-io-1.3.1.jar 位于构建路径上(${app.lib.dir}
中)。所以,构建失败很奇怪。
<target name="compile">
<mkdir dir="${classes.dir}" />
<javac destdir="${classes.dir}" debug="true" classpathref="dependency.path"
excludes="/../security/**" >
<src path="${java.src.dir}" />
</javac>
</target>
<path id="dependency.path">
<fileset dir="${spring.lib.dir}" includes="*.jar" />
<fileset dir="${spring.depends.dir}" includes="**/*.jar" />
<fileset dir="${app.lib.dir}" includes="*.jar" />
<fileset dir="${tomcat.dir}/.." includes="**/*.jar" />
</path>
ant -f build-dev.xml compile
Buildfile: C:\..\build-dev.xml compile:
[mkdir] Created dir: C:\..\classes
[javac] Compiling 348 source files to C:\..\classes
[javac] C:\..\UploadUtil.java:132: cannot find symbol
[javac] symbol : method lineIterator(java.io.InputStream,java.lang.String)
[javac] location: class org.apache.commons.io.IOUtils
[javac] Iterator<String> it = IOUtils.lineIterator(is, charSet);
[javac] ^
[javac] Note: Some input files use or override a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 1 error
BUILD FAILED
C:\..\build-dev.xml:54: Compile failed; see the compiler error output for details.
Total time: 11 seconds
IOUtils
,因为Eclipse在jar的内容中显示它。 答案 0 :(得分:4)
最可能的解释是包含类的jar不在类路径中。
我仔细检查了Maven Central,以防万一有一个名为“commons-io-1.3.1”的jar不包含这个类,但遗憾的是没有:
所以我建议您在构建中添加以下诊断目标,以便确认jar实际上在类路径中:
<target name="diagnostics">
<pathconvert property="classpathProp" refid="dependency.path"/>
<echo>Classpath is ${classpathProp}</echo>
</target>