Ant编译class
⑴ java web项目开发,用ant将java文件编译为class文件和直接在Eclipse运行java文件编译成class,有什么区别
没有任何区别。ant是自动化编译工具,而Eclipse作为IDE,也可以帮助你自动化编译。编译的过程都是调用了你安装的JDK中的java编译器
⑵ 如何使用Ant来编译Java文件以及如何运行
一、源文件情况
源文件位置为:D:\temp,源文件名(含包名字):com.ldq.WeatherDemo.java
前提:已安装 jdk ,并配置好环境变量。
二、过程
1、编译:
提示符进入 D:\temp 路径下,输入:javac com\ldq\WeatherDemo.java
生成类文件:WeatherDemo.class
2、打包:
提示符进入 D:\temp 路径下,输入:jar cvf WeatherDemo.jar com\ldq\WeatherDemo.class
生成档案文件:WeatherDemo.jar
3、修改 MANIFEST.MF 文件:
由于引用了外部的类,所以要添加引用类的路径,即修改MANIFEST.MF文件。保存如下内容到 D:\temp下,文件名 MANIFEST.MF
Manifest-Version: 1.0
Sealed: true
Main-Class: com.ldq.WeatherDemo
Class-Path: lib/jaxrpc.jar lib/log4j-1.2.8.jar lib/mail.jar lib/saaj.jar lib/tools.jar lib/wsdl4j-1.5.1.jar lib/activation.jar lib/axis.jar lib/axis-ant.jar lib/commons-discovery-0.2.jar lib/commons-logging-1.0.4.jar
注意在后面空两行。
提示符进入 D:\temp 路径下,输入:jar umf MANIFEST.MF WeatherDemo.jar
执行时会提示更新的内容。
4、添加包含引用类的相应文件:
在 D:\temp 路径下,新建 lib 文件夹,讲对应的 jaxrpc.jar ... 拷入其中,此时,即可双击(或在提示符下输入:java -jar WeatherDemo.jar)运行 WeatherDemo.jar 文件了。
三、总结
双击运行 jar 文件时,虚拟机会到 jar 文件中下找 .MF 文件,找到对应的 Main-Class 运行,引入的类在 Class-Path 所指路径。
事实上可以利用 winrar或winzip 工具打开 jar 文件,直接将修改好的 MANIFEST.MF 拷入覆盖,class文件也可以做同样的操作,节省了输入复杂难记的命令。另外,对于 javaME 生成的 jar 文件,限制严格些,MANIFEST.MF 文件中有个文件大小的字段,可以先保存,查看文件大小,再修改保存。
另一种方法是通过 Eclipse - Export - Runnable JAR file 直接生成 jar 文件,此时,所有的引用类都被打包在 jar 文件里了。
⑶ 使用Ant在编译java类的时候出现以下错误,请问是什么原因呢应该如何解决
泛型类型,javac编译出错,加-source1.5
泛型从1.5以后开始有C:>javac
用法:javac<options><sourcefiles>
其中,可能的选项包括:
-g生成所有调试信息
-g:none不生成任何调试信息
-g:{lines,vars,source}只生成某些调试信息
-nowarn不生成任何警告
-verbose输出有关编译器正在执行的操作的消息
-deprecation输出使用已过时的API的源位置
-classpath<路径>指定查找用户类文件和注释处理程序的位置
-cp<路径>指定查找用户类文件和注释处理程序的位置
-sourcepath<路径>指定查找输入源文件的位置
-bootclasspath<路径>覆盖引导类文件的位置
-extdirs<目录>覆盖所安装扩展的位置
-endorseddirs<目录>覆盖签名的标准路径的位置
-proc:{none,only}控制是否执行注释处理和/或编译。
-processor<class1>[,<class2>,<class3>...]要运行的注释处理程序的名称;绕过默认的搜索进程
-processorpath<路径>指定查找注释处理程序的位置
-parameters生成元数据以用于方法参数的反射
-d<目录>指定放置生成的类文件的位置
-s<目录>指定放置生成的源文件的位置
-h<目录>指定放置生成的本机标头文件的位置
-implicit:{none,class}指定是否为隐式引用文件生成类文件
-encoding<编码>指定源文件使用的字符编码
-source<发行版>提供与指定发行版的源兼容性
-target<发行版>生成特定VM版本的类文件
-profile<配置文件>请确保使用的API在指定的配置文件中可用
-version版本信息
-help输出标准选项的提要
-A关键字[=值]传递给注释处理程序的选项
-X输出非标准选项的提要
-J<标记>直接将<标记>传递给运行时系统
-Werror出现警告时终止编译
@<文件名>从文件读取选项和文件名
⑷ 如何使用ANT在命令行进行编译和测试
一、环境变量
在网上找到ANT的压缩包,解压缩以后放到C盘根目录如下图
对,就是这个鬼样子,放在这里就可以用了,不用安装之类的
环境变量如下图:
你要定义ANT_HOME,然后让系统path找到这个ANT_HOME就行了
二、写build.xml
你的目录结构如下图:
源文件 放在src
引用的jar包放在lib
编译结果安排在classes
接下来就是build.xml了
如下,自己看吧
[html] view plain
<?xml version="1.0"?>
<project name="pojo_0428" default="prepare" basedir=".">
<property name="source.root" value="src"/>
<property name="class.root" value="classes"/>
<property name="lib.dir" value="lib"/>
<!-- class path for compilation and execution -->
<path id="basepath">
<!-- 运行时 class文件的位置 -->
<pathelement location="${class.root}" />
<!-- jar包 -->
<fileset dir="${lib.dir}">
<include name="*.jar"/>
</fileset>
</path>
<!--默认的target -->
<target name="prepare">
<delete dir="${class.root}"/>
<mkdir dir="${class.root}"/>
</target>
<!--编译 -->
<target name="compile" depends="prepare">
<javac srcdir="${source.root}"
destdir="${class.root}"
debug="on"
optimize="off"
deprecation="on">
<classpath refid="basepath"/>
</javac>
</target>
<!--执行。 案例程序的入口 依赖 compile -->
<target name="run" depends="compile">
<java classname="com.javathink.Student" fork="true">
<classpath refid="basepath"/>
</java>
</target>
</project>
⑸ ant编译build.xml文件
折腾了大半天,可算捣腾出来了,这里需要提醒注意如下几点:
1、如果jdk是1.6及以下,则需要使用的ant版本是1.9.x;
2、如果jdk是1.8,则需要使用ant版本是1.10.x;
3、可用eclipse导出war包,将lib目录下的jar包放到一个目录下,然后直接引用,避免遗漏掉jar包没导入进去。
以下是build.xml文件内容,安装好ant后,直接执行ant build.xml即可打包。
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义一个工程,默认任务为warFile。 -->
<project name="bing-info" default="warFile" basedir=".">
<!-- 指定jdk 貌似这里指定也没什么用~-->
<property name="env.JAVA_HOME" value="C:/Program Files/Java/jdk1.8.0_101"/>
<!-- 定义属性,打成war包的名称。 -->
<property name="warFileName" value="nbAPP.war"></property>
<!-- 指定war包路径及依赖包路径 这里需要指定工程的路径 -->
<property name="compilePath" value="D:/project/nbAPP"/>
<!-- 定义路径,编译java文件时用到的jar包。 -->
<path id="project.lib">
<fileset dir="${basedir}/lib">
<include name="**/*.jar"/>
</fileset>
</path>
<!-- 定义任务,清空任务:清空原有的class文件,创建新的build路径。 -->
<target name="clean">
<delete dir="${compilePath}/build" />
<mkdir dir="${compilePath}/build" />
</target>
<!-- 定义任务,编译src文件夹中的java文件,编译后的class文件放到创建的文件夹下。 -->
<target name="compile" depends="clean">
<javac srcdir="${basedir}/src/main" debug="true" includeantruntime="false" encoding="UTF-8" >
<classpath refid="project.lib">
</classpath>
</javac>
</target>
<!-- 定义默认任务,将class文件集合成jar包。 -->
<target name="warFile" depends="compile">
<!-- 删除原有war包。 -->
<delete dir="${compilePath}/${warFileName}" />
<!-- 建立新war包。 -->
<war destfile="${compilePath}/${warFileName}" webxml="${basedir}/WebRoot/WEB-INF/web.xml">
<!-- 将非jar和非class文件拷贝到war包的对应路径下。 -->
<fileset dir="${basedir}/WebRoot">
<include name="**/**.*" />
<exclude name="**/*.jar"/>
<include name="WEB-INF/classes/**"/>
</fileset>
<!-- 将jar和class文件拷贝到war包的对应路径下。 -->
<lib dir="${compilePath}/lib" />
<classes dir="${compilePath}/build" />
<!-- 将资源文件拷贝进war对应路径下 -->
<classes dir="${basedir}/src/main/resources" />
</war>
</target>
</project>
⑹ hadoop1.2.1+eclipse: 执行ant编译错误提示:
.在Eclipse中执行Ant的脚本编译出现问题
Copy
to clipboard
Posted by: njord
Posted on: 2003-08-19
11:40
信息如下:
compile:
[javac]
Compiling 15 source files to
E:\work_home\OakingSecurity\build\classes
[javac] BUILD FAILED:
file:E:/work_home/OakingSecurity/build.xml:48: Unable to find a javac
compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps
JAVA_HOME does not point to the
JDK
我的系统变量设置了JAVA_HOME的,在命令行直接运行ant都没有问题。
请问这是怎么回事?是不是还要在Eclipse中设置什么?
2.Re:在Eclipse中执行Ant的脚本编译出现问题 [Re: njord]
Copy
to clipboard
Posted by: fengyifan
Posted on: 2003-08-19
21:49
put tools.jar in ant classpath
3.Re:在Eclipse中执行Ant的脚本编译出现问题 [Re: njord]
Copy
to clipboard
Posted by: babyoracle
Posted on: 2003-08-20
07:42
用这个方法就可以了
http://www.cjsdn.com/post/view?bid=7&id=45620&sty=3&tpg=1&age=0
4.Re:在Eclipse中执行Ant的脚本编译出现问题 [Re: njord]
Copy
to clipboard
Posted by: njord
Posted on: 2003-08-22
13:03
在Eclipse的首选项中可以配置ANT_HOME,但又出现如下错误:
BUILD FAILED:
java.lang.VerifyError: (class:
org/apache/xerces/parsers/IntegratedParserConfiguration, method:
configurePipeline signature: ()V) Incompatible type for getting or setting
field
Total time: 94 milliseconds
为什么?
5.Re:在Eclipse中执行Ant的脚本编译出现问题 [Re: feng]
Copy
to clipboard
Posted by: njord
Posted on: 2003-08-22
13:12
feng wrote:
put tools.jar in ant
classpath
用Eclipse默认的ANT选项,然后加上tools.jar是可以了,不过它又提示不支持junit任务,晕倒~
[junit]
BUILD FAILED: file:E:/work_home/OakingSecurity/build.xml:76: Could not create
task or type of type: junit.
Ant could not find the task or a class this
task relies upon.
而我用自己下载的Ant1.5.3又出现前面帖子的错误提示,为什么?
6.Re:在Eclipse中执行Ant的脚本编译出现问题 [Re: njord]
Copy
to clipboard
Posted by: njord
Posted on: 2003-08-22
13:19
⑺ ant怎么编译带有依赖关系的类
1.所有的类一起编译。
2.你的父添加到classpath中。
3.ant 中添加 classpath 下边是例 子。
<javac destdir="${classes.dir}" srcdir="${src.dir}" encoding="UTF-8">
<classpath refid="classespath" />
</javac>
⑻ ant编译后的class文件为空,是怎么回事
jad反编译,你反编译后再编译是吗?不用那么累用字节码工具
⑼ ant编译报错的问题
不是代码的问题,是你引包出现的问题。给的报错已经很明显了,EntityDaoHibernate类和EntityDaoHibernate类都有findByHql方法,且签名相同。检查你javac标签下的classpath有没有引错包。