尽管所需的jar位于类路径上,但compile
目标中的javac
任务失败了。谁能告诉我为什么会这样?
下面的错误是由于无法识别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
方法尝试
- 令人惊讶的是,
- Eclipse正在毫无问题地构建项目。我在项目构建路径上有相同的jar集。我还在编译中排除了相同的源目录。
- 试图在源文件夹上使用javac可执行文件,但不确定如何在源代码目录结构上使用javac
- 我确信我所拥有的jar的版本具有类
IOUtils
,因为Eclipse在jar的内容中显示了它。
最可能的解释是包含类的jar不在类路径上。
我仔细检查了Maven Central,以防万一有一个名为"commons-io-1.3.1"的jar不包含这个类,但遗憾的是没有:
- http://search.maven.org/ga搜索| | 1 | % 3 a % 22 commons-io % 20 - 22% % 20不是% 20 fc % % 22 org.apache.commons.io.ioutils % 22 3
因此,我建议您在构建中添加以下诊断目标,以便您可以确认jar实际上位于类路径上:
<target name="diagnostics">
<pathconvert property="classpathProp" refid="dependency.path"/>
<echo>Classpath is ${classpathProp}</echo>
</target>