怀疑Apache-Ant1.6.5中的build.xml文件

时间:2009-02-06 12:53:24

标签: java

我在Generics的代码中使用了Collections。当尝试在build.xml中编译该java文件时,它在泛型中显示错误并且它说它不是语句。我使用的是Apache-Ant-1.6.5,我只安装了JDK 1.5。我知道泛型将支持jdk1.5,但它显示错误。以下是我为代码

获得的错误

代码:

Map<String, String> inputconfigmap = 
    new LinkedHashMap<String, String>();

例外:

compile:
    [mkdir] Created dir: D:\GenericPreProcessor\Source\classes
    [javac] Compiling 49 source files to D:\GenericPreProcessor\Source\classes
    [javac] D:\GenericPreProcessor\Source\src\com\dnb\genericpreprocessor\fileprocessor\FixedLength
FileProcessor.java:187: not a statement
    [javac] Map<String, String> inputconfigmap = 
                new LinkedHashMap<String, String>();

我按照你的建议做了,但我在控制台中得到了以下内容。

控制台:
d:\ GenericPreProcessor \来源&GT;蚂蚁
Buildfile:build.xml
     [echo] JVM版本是1.5
     [echo]目标编译是$ {ant.build.javac.target}

清洁:
   [删除]删除目录D:\ GenericPreProcessor \ Source \ classes

cleanJar:

编译:
    [mkdir]创建了dir:D:\ GenericPreProcessor \ Source \ classes
    [javac]将49个源文件编译为D:\ GenericPreProcessor \ Source \ classes
    [javac] javac:无效的目标释放:1.5
    [javac]用法:javac
    [javac]可能的选项包括:
    [javac] -g生成所有调试信息
    [javac] -g:none不生成调试信息
    [javac] -g:{lines,vars,source}仅生成一些调试信息
    [javac] -nowarn不发出警告
    [javac] -verbose输出有关编译器正在执行的操作的消息     [javac] -deprecation使用弃用API的输出源位置
    [javac] -classpath指定查找用户类文件的位置
    [javac] -sourcepath指定查找输入源文件的位置
    [javac] -bootclasspath覆盖引导类文件的位置
    [javac] -extdirs覆盖已安装扩展的位置
    [javac] -d指定生成的类文件的放置位置
    [javac] -encoding指定源文件使用的字符编码
    [javac] -source提供与指定版本的源兼容性
    [javac] -target为特定VM版本生成类文件
    [javac] -help打印标准选项的概要

建立失败

5 个答案:

答案 0 :(得分:2)

您是否尝试过为javac任务明确设置sourcetarget属性?

<target name="compile">
    <javac .....
        source="1.6"
        target="1.6" />
</target>

答案 1 :(得分:1)

也许您可以通过以下方式检查您的编译器的版本:

<echo>JVM version is ${ant.java.version}</echo>
<echo>Target compilation is ${ant.build.javac.target}</echo>

您可以添加<property name="ant.build.javac.target" value="1.5" />以强制编译器使用Java 5合规性... 这个属性是ant 1.7的默认目标,对于ant 1.6我认为你必须将target="${ant.build.javac.target}"添加到你的javac目标。

答案 2 :(得分:0)

您需要定义Map的类型,即:

Map<String, String> inputconfigmap  = new LinkedHashMap<String, String>(); 

答案 3 :(得分:0)

尝试

Map<?, ?> inputconfigmap = new LinkedHashMap<?, ?>(); 

答案 4 :(得分:0)

您使用的是双尖括号(&lt;&lt;&gt;&gt;)?它们应该是单身的,如kgiannakakis所示:

Map<String, String> inputconfigmap  = new LinkedHashMap<String, String>();