用ant编译helloworld程序出错

wclluck 2006-03-28 02:25:40

小弟写了一个很简单的helloworld的ejb程序,当初我用jdk1.42,jboss4.0时,用ant能正常编译,并且能正常部署到jboss下面,可是当我把jdk版本升级到1.5时,jboss还是用4.0,用ant编译java文件时出现下列提示:
读取 D:\jboss\bin\classpath.sh 时出错;error in opening zip file
D:\ejb\hello\src\HelloWorldClient.java 使用了未经检查或不安全的操作。
要了解详细信息,请使用 -Xlint:unchecked 重新编译。

不知哪位高手碰到过这种问题,能否解答一下?
...全文
172 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wclluck 2006-03-28
  • 打赏
  • 举报
回复
没人碰到过这种问题吗?自己up一下
nighthawk 2006-03-28
  • 打赏
  • 举报
回复
Xlint:unchecked
启用对所谓的未经检查的转换(unchecked warning)的警告。这个警告涉及 JDK 5.0 中的新特性——范型(Generic Type)
你用 javac -X 看看
Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作。 一. 安装与配置 下载地址:http://ant.apache.org/,在本文中下载的是1.7.0版本。解压到某个目录(例如E:"apache-ant-1.7.0),即可使用。 添加系统环境变量:ANT_HOME,该变量指向Ant解压后的根目录,在此为E:"apache-ant-1.7.0。 安装与配置完毕后,读者可以测试一下Ant是否可用,首先进入Ant的bin目录,运行命令ant –version,若安装和配置成功,则会显示Ant版本信息,如下图所示: 由上可以看出,读者运行Ant的命令时,需要进入到Ant的bin目录,如何才能让系统自动找到Ant呢?这时需要读者在系统环境变量path中添加Ant的bin目录。设置完成后,我们就可以在任何目录(例如C:"Documents and Settings"AmigoXie目录)输入Ant的命令,来获得命令的运行结果。 二. Ant的关键元素 Ant的构件文件是基于XML编写的,默认名称为build.xml。为了更清楚的了解Ant,在这里编写一个简单的Ant程序,用来展现Ant的功能,让读者对Ant有一个初步的了解。首先在E盘下建立一个build.xml文件,内容如下: 读者可以进入E盘,然后运行ant sayHelloWorld,可以看到如下的运行结果: 其中sayHelloWorld为需要执行的任务的名称。如果文件名不为build.xml,而为hello.xml时,读者运行同样的命令时,命令窗口会出现如下错误: Buildfile: build.xml does not exist! Build failed 由上面的命令的错误提示可以看出,ant命令默认寻找build.xml文件。若文件名为hello.xml时,读者还需要对命令做少许改变,改为:ant –f hello.xml sayHelloWorldant –buildfile hello.xml sayHelloWorldant –file hello.xml sayHelloWorld。 接下来开始向读者讲解本节的重点:Ant的关键元素project、target、property和task。 1. project元素 project元素是Ant构件文件的根元素,Ant构件文件至少应该包含一个project元素,否则会发生错误。在每个project元素下,可包含多个target元素。接下来向读者展示一下project元素的各属性。 1)name属性 用于指定project元素的名称。 2)default属性 用于指定project默认执行时所执行的target的名称。 3)basedir属性 用于指定基路径的位置。该属性没有指定时,使用Ant的构件文件的附目录作为基准目录。 下面给读者一个简单的例子来展示project的各元素的使用。修改E:"build.xml文件,修改后的内容如下: ant-1.7.0"> 从上面的内容我们可以看出,在这里定义了default属性的值为sayBaseDir,即当运行ant命令时,若未指明执行的target时,默认执行的target的sayBaseDir,同时还定义了basedir属性的值为E:"apache-ant-1.7.0,进入E盘后运行ant命令,可看到运行的结果,如下图所示: 因为设定了basedir的值,所以basedir属性的值变成了读者设置的值。读者可以自行将project元素的basedir属性去掉后运行ant看看运行结果,此时basedir的值变成了E:",即为Ant构件文件的父目录。 有的时候,读者可能有这种需求,即想得到某个project下所有的target的名称,读者可以通过在ant命令里加上-proecthelp来达到该目的。例如针对上述的例子我们运行ant –projecthelp,输出结果如下: Buildfile: build.xml Main targets: Other targets: sayBaseDir Default target: sayBaseDir 2. target元素 它为Ant的基本执行单元,它可以包含一个或多个具体的任务。多个target可以存在相互依赖关系。它有如下属性: 1)name属性 指定target元素的名称,这个属性在一个project元素中是唯一的。我们可以通过指定target元素的名称来指定某个target。 2)depends属性 用于描述target之间的依赖关系,若与多个target存在依赖关系时,需要以“,”间隔。Ant会依照depends属性中target出现的顺序依次执行每个target。被依赖的target会先执行。 3)if属性 用于验证指定的属性是否存在,若不存在,所在target将不会被执行。 4)unless属性 该属性的功能与if属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在target将会被执行。 5)description属性 该属性是关于target功能的简短描述和说明。 下面带领读者来看一个各属性综合使用的例子。修改E:"build.xml文件,修改后的内容如下: a depend example! 进入E盘后运行ant targetB,可看到如下图所示的运行结果: 读者分析结果后可以看到,我们运行的是名为targetB的target,因该target依赖于targetA,所以targetA将首先被执行,同时因为系统安装了java环境,所以ant.java.version属性存在,执行了targetA这个target,输出信息:[echo] Java Version: 1.5,targetA执行完毕后,接着执行targetB,因为amigo不存在,而unless属性是在不存在时进入所在的target的,由此可知targetB得以执行,输出信息:The base dir is: E:"。 3. property元素 该元素可看作参量或者参数的定义,project的属性可以通过property元素来设定,也可在Ant之外设定。若要在外部引入某文件,例如build.properties文件,可以通过如下内容将其引入: property元素可用作task的属性值。在task中是通过将属性名放在“${”和“}”之间,并放在task属性值的位置来实现的。 Ant提供了一些内置的属性,它能得到的系统属性的列表与Java文档中System.getPropertis()方法得到的属性一致,这些系统属性可参考sun网站的说明。 同时,Ant还提供了一些它自己的内置属性,如下: basedir:project基目录的绝对路径,该属性在讲解project元素时有详细说明,不再赘述; ant.file:buildfile的绝对路径,如上面的各例子中,ant.file的值为E:"build.xml; ant.version:Ant的版本,在本文中,值为1.7.0; ant.project.name:当前指定的project的名字,即前文说到的project的name属性的值; ant.java.version:Ant检测到的JDK的版本,在上例运行结果中可看到为1.5。 下面让读者来看一个property元素使用的简单例子。修改E:"build.xml文件,内容如下: 该例的运行结果如下图所示: 由此读者可以看出,通过如下两个语句: 我们设置了名为name和age的两个属性,这两个属性设置后,读者在下文中可以通过${name}和${age}分别取得这两个属性的值。 三. Ant的常用任务 在Ant工具中每一个任务封装了具体要执行的功能,是Ant工具的基本执行单位。在本小节中,主要引导读者来看下Ant的常用任务及其使用举例。 1. copy任务 该任务主要用来对文件和目录的复制功能。举例如下: Eg1.复制单个文件: Eg2.对文件目录进行复制: Eg3. 将文件复制到另外的目录: 2. delete任务 对文件或目录进行删除,举例如下: Eg1. 删除某个文件: Eg2. 删除某个目录: Eg3. 删除所有的备份目录或空目录: 3. mkdir任务 创建目录。eg: 4. move任务 移动文件或目录,举例如下: Eg1. 移动单个文件: Eg2. 移动单个文件到另一个目录: Eg3. 移动某个目录到另一个目录: 5. echo任务 该任务的作用是根据日志或监控器的级别输出信息。它包括message、file、append和level四个属性,举例如下: 四. 利用Ant构建和部署Java工程 Ant可以代替使用javac、java和jar等命令来执行java操作,从而达到轻松的构建和部署Java工程的目的。下面来看几个知识点。 1. 利用Ant的javac任务来编译java程序 Ant的javac任务用于实现编译Java程序的功能。下面来看一个简单的例子: 首先我们建立名为antstudy的Java工程,建立src目录为源代码目录,在src目录下建立HelloWorld.java这个类文件。该类文件的内容如下: public class HelloWorld { public static void main(String[] args) { System.out.println("Hello,Amigo"); } } 同时在antstudy工程的根目录下建立build.xml文件,在该文件中编译src目录下的java文件,并将编译后的class文件放入build/classes目录中,在编译前,需清除classes目录,该文件的内容如下: 运行该build.xml文件,可在工程中看到新增了build/classes目录,并在该目录中生成了编译后的HelloWorld.class文件。 2. 使用Ant的java任务运行Java程序 Ant中可以使用java任务实现运行Java程序的功能。下面在1的例子中进行如下的修改,修改后的build.xml文件的内容如下: 运行该build.xml文件,可在控制台看到HelloWorld的main方法的输出。 3. 使用Ant的jar任务生成jar文件 读者可以在上例的基础上更进一步,来生成jar包,可在run这个target下再加上如下target: 此时将ant的project的default属性设置为jar,同时运行该build.xml文件,运行完毕后,可看到在工程目录下生成了一个jar包HelloWorld.jar。 4. 使用Ant的war任务打包J2EE Web项目 建立一个J2EE Web工程,其目录结构如下图所示: 其中src为源代码目录,WebRoot为各jsp存放目录,lib为工程的包目录。在antwebproject工程目录下建立了build.xml文件,该文件为该工程的Ant构件文件。读者可以src目录下放入在前续例子中开发的HelloWorld.java文件,并在WebRoot下建立index.jsp文件,其内容很简单,就是输出Hello信息,代码如下所示: <%@ page language="java" contentType="text/html; charset="UTF-8" pageEncoding="UTF-8"%> <em>ant</em>打包测试 Hello,Ant 接下来编写build.xml文件,其内容如下: 各target的作用在内容中已经进行说明,在此不再赘述。运行该build文件,更新目录后,可看到在build目录下生成了antwebproject.war文件,解开后可看到其目录结构如下: --META-INF --MANIFEST.MF --index.jsp --WEB-INF --lib --log4j-1.2.9.jar --classes --HelloWorld.class --web.xml 读者可以将该war包拷贝到Tomcat的目录下看一下运行结果。 五. 总结 在本文中,笔者由浅至深详细描述了Ant的安装与配置、关键元素和常用任务。并通过实例讲述了Ant在我们Java项目中的应用,讲述了编译、运行java程序,以及打jar包、war包等知识,引领读者进入Ant的奇妙世界。在本文中可以看到,Ant在自动构建和部署Java程序方面方便易用,而且非常灵活,不失为我们Java开发者的绝佳帮手
目 录 I 关于本博客的主题 IV 第一章 什么是Android 1 什么是Android - 嵌入式设备编程的历史-第一章(1) 1 开放手机联盟和Android-(2) 2 介绍Android 第一章(3) 3 Android示例 - 第四章(4) 4 Android的几个示例 - 第四章(5) 5 第二章 下载和安装Eclipse总则 6 下载和安装Eclipse总则 - 第二章(1) 6 下载和安装JRE - 第二章(2) 7 下载和安装Eclipse - 第二章(3) 8 第三章 下载和安装Android SDK 10 下载和安装Android SDK - 第三章(1) 10 下载Android SDK - 第三章(2) 10 为Eclipse配置Android Plugin - 第三章(3) 12 第四章 浏览Android SDK 14 浏览Android SDK - 第四章(1) 14 Android SDK是什么 - 第四章(2) 14 Android 文档 - 第四章(3) 15 Android示例 - 第四章(4) 15 Android的几个示例 - 第四章(5) 16 Android工具 - 第四章(6) 17 Android APIs - 第四章(7) 18 应用程序生命周期 - 第四章(8) 19 第五章Android程序Hello World! 21 Android程序Hello World! -第五章(1) 21 仔细查看Android创建的文件 - 第五章(2) 23 引用库和目录 - 第五章(3) 24 Hello World!自动产生文件的详解 - 第五章(4) 25 Hellow World! 再来一次 - 第五章(5) 28 Hello World! 使用一个图形 - 第五章(6) 30 Hello World!代码为基的UI-第五章(7) 31 Hello World! XML为基的UI - 第五章(8) 33 第六章 使用命令行工具和Android模拟器 35 使用命令行工具和Android模拟器 - 第六章(1) 35 利用Windows CLI创建一个壳活动 - 第六章(2) 35 运行ActivityCreator.bat - 第六章(3) 35 项目结构 - 第六章(4) 38 在Windows CLI下创建Hello World!活动 - 第六章(5) 42 增加JAVA_HOME 第六章 (6) 43 编译并安装应用程序 第六章(7) 44 如果运行ANT出错该怎么办? 第六章(8) 44 用adb安装你的应用程序 第六章(9) 48 运行应用程序产生了一个错误怎么办 - 第六章(10) 49 卸载一个较早的活动 - 第六章(11) 49 重新安装并启动应用程序 - 第六章(12) 50 Linux上的Hello World! 第六章(13) 50 在CLI中创建一个图片基础的Hello World! 第六章(14) 52 第七章 使用Intents 和电话拨号盘 53 使用Intents 和电话拨号盘 第七章(1) 53 Intents是什么? 第七章(2) 53 使用拨号盘 第七章(3) 58 从你的活动中打出电话 第七章(4) 60 编辑活动许可 第七章(5) 62 修改AndroidPhoneDialer 第七章(6) 64 执行一个EditText View 第七章(7) 68 试试这个:修改AndoridPhoneDialer项目 第七章(8) 71 第八章 列表,菜单和其它Views 74 列表,菜单和其它Views 第八章(1) 74 修改AndroidManifest.xml文件 第八章(2) 76 使用菜单 第八章(3) 78 为AutoComplete创建一个活动 第八章(4) 82 按钮 第八章(5) 89 CheckBox 第八章(6) 93 EditText 第八章(7) 98 RadioGroup 第八章(8) 102 Spinner 第八章(9) 107 试试这个:修改更多的View属性 第八章(10) 112 第九章 使用手机的GPS功能 112 使用手机的GPS功能 第九章(1) 112 什么是轨迹文件 第九章(2) 115 使用Android位置基础API读取GPS 第九章(3) 116 书写代码来允许活动 第九章(4) 120 传递坐标到Google地图 第九章(5) 122 增加缩放控制 第九章(6) 125 试试这个:在MapView之间转换 第九章(7) 130 第十章 使用Google API的Gtalk 134 使用Google API的GTalk 第十章(1) 134 在Android中执行GTalk 第十章(2) 136 编译并运行GoogleAPI 第十章(3) 143 试试这个:为GoogleAPI活动增加设置特性 第十章(4) 145 第十一章 应用程序:找一个朋友 145 应用程序:找一个朋友 第十一章(1) 145 创建一个SQLite数据库 第十一章(2) 146 创建一个定制的Content Provider 第十一章(3) 148 创建Content Provider 第十一章(4) 150 创建FindAFriend活动 第十一章(5) 160 创建NameEditor活动 第十一章(6) 162 创建LocationEditor活动 第十一章(7) 166 创建FriendsMap活动 第十一章(8) 175 创建FindAFriend活动 第十一章(9) 181 运行FindAFriend活动 第十一章(10) 184 Android SDK 工具参考 第十二章 (完) 185 Android SDK 工具参考 第十二章 (完) 185 Android SDK 1.5 - 包装索引 191
中文版Android程序员入门 目 录 I 关于本博客的主题 IV 第一章 什么是Android 1 什么是Android - 嵌入式设备编程的历史-第一章(1) 1 开放手机联盟和Android-(2) 2 介绍Android 第一章(3) 3 Android示例 - 第四章(4) 4 Android的几个示例 - 第四章(5) 5 第二章 下载和安装Eclipse总则 6 下载和安装Eclipse总则 - 第二章(1) 6 下载和安装JRE - 第二章(2) 7 下载和安装Eclipse - 第二章(3) 8 第三章 下载和安装Android SDK 10 下载和安装Android SDK - 第三章(1) 10 下载Android SDK - 第三章(2) 10 为Eclipse配置Android Plugin - 第三章(3) 12 第四章 浏览Android SDK 14 浏览Android SDK - 第四章(1) 14 Android SDK是什么 - 第四章(2) 14 Android 文档 - 第四章(3) 15 Android示例 - 第四章(4) 15 Android的几个示例 - 第四章(5) 16 Android工具 - 第四章(6) 17 Android APIs - 第四章(7) 18 应用程序生命周期 - 第四章(8) 19 第五章Android程序Hello World! 21 Android程序Hello World! -第五章(1) 21 仔细查看Android创建的文件 - 第五章(2) 23 引用库和目录 - 第五章(3) 24 Hello World!自动产生文件的详解 - 第五章(4) 25 Hellow World! 再来一次 - 第五章(5) 28 Hello World! 使用一个图形 - 第五章(6) 30 Hello World!代码为基的UI-第五章(7) 31 Hello World! XML为基的UI - 第五章(8) 33 第六章 使用命令行工具和Android模拟器 35 使用命令行工具和Android模拟器 - 第六章(1) 35 利用Windows CLI创建一个壳活动 - 第六章(2) 35 运行ActivityCreator.bat - 第六章(3) 35 项目结构 - 第六章(4) 38 在Windows CLI下创建Hello World!活动 - 第六章(5) 42 增加JAVA_HOME 第六章 (6) 43 编译并安装应用程序 第六章(7) 44 如果运行ANT出错该怎么办? 第六章(8) 44 用adb安装你的应用程序 第六章(9) 48 运行应用程序产生了一个错误怎么办 - 第六章(10) 49 卸载一个较早的活动 - 第六章(11) 49 重新安装并启动应用程序 - 第六章(12) 50 Linux上的Hello World! 第六章(13) 50 在CLI中创建一个图片基础的Hello World! 第六章(14) 52 第七章 使用Intents 和电话拨号盘 53 使用Intents 和电话拨号盘 第七章(1) 53 Intents是什么? 第七章(2) 53 使用拨号盘 第七章(3) 58 从你的活动中打出电话 第七章(4) 60 编辑活动许可 第七章(5) 62 修改AndroidPhoneDialer 第七章(6) 64 执行一个EditText View 第七章(7) 68 试试这个:修改AndoridPhoneDialer项目 第七章(8) 71 第八章 列表,菜单和其它Views 74 列表,菜单和其它Views 第八章(1) 74 修改AndroidManifest.xml文件 第八章(2) 76 使用菜单 第八章(3) 78 为AutoComplete创建一个活动 第八章(4) 82 按钮 第八章(5) 89 CheckBox 第八章(6) 93 EditText 第八章(7) 98 RadioGroup 第八章(8) 102 Spinner 第八章(9) 107 试试这个:修改更多的View属性 第八章(10) 112 第九章 使用手机的GPS功能 112 使用手机的GPS功能 第九章(1) 112 什么是轨迹文件 第九章(2) 115 使用Android位置基础API读取GPS 第九章(3) 116 书写代码来允许活动 第九章(4) 120 传递坐标到Google地图 第九章(5) 122 增加缩放控制 第九章(6) 125 试试这个:在MapView之间转换 第九章(7) 130 第十章 使用Google API的Gtalk 134 使用Google API的GTalk 第十章(1) 134 在Android中执行GTalk 第十章(2) 136 编译并运行GoogleAPI 第十章(3) 143 试试这个:为GoogleAPI活动增加设置特性 第十章(4) 145 第十一章 应用程序:找一个朋友 145 应用程序:找一个朋友 第十一章(1) 145 创建一个SQLite数据库 第十一章(2) 146 创建一个定制的Content Provider 第十一章(3) 148 创建Content Provider 第十一章(4) 150 创建FindAFriend活动 第十一章(5) 160 创建NameEditor活动 第十一章(6) 162 创建LocationEditor活动 第十一章(7) 166 创建FriendsMap活动 第十一章(8) 175 创建FindAFriend活动 第十一章(9) 181 运行FindAFriend活动 第十一章(10) 184 Android SDK 工具参考 第十二章 (完) 185 Android SDK 工具参考 第十二章 (完) 185 Android SDK 1.5 - 包装索引 191

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧