带参数的可执行jar包程序实现从指定位置读取xml并解析指定字段
2014-12-23 13:54
501 查看
1、需求描述:有一批包含表DDL信息的xml文件,结构相同,希望迅速读取其中的表结构信息
2、执行环境:Linux/UNIX
3、实现思路:新建一个java工程,主函数设置两个入参,一个是文件路径,一个是包含表结构信息的节点属性名,java程序执行的时候带上入参,直接将解析后的结果用字符串的方式打印出来
4、xml文件格式参考:
在工程上右键--export,选择Runnable JAR file,而不是JAR file,如下图,点击下一步:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201412/d9ad6df080bfe6311a89d0035914d613)
本地run的时候会有执行的配置信息,在下一步的界面中可以直接选择这个配置,里面包含了指定主函数所在的java类。对于要输入参数的main方法,在配置run的信息时,把参数写在Program arguments中,多个参数用空格隔开。下一步的配置界面如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201412/b45598ed8620aa3a03874b4fec5b5bb2)
Library handling就是专门处理引用的外部jar包的,三个选项的含义如下:
1)Extract required libraries into generated JAR:将所有用到的class文件(包括自己写的和第三方包里的),打成一个jar包,第三方的在新打的jar包中直接以class方式存放
2)Package required libraries into generated JAR:将自己写的class文件打成一个jar包,把第三方jar包原封不动的打进这个新jar包里,第三方jar包的class要经过两次解压才能看到,这种方式下的第三方jar包对jvm不可见,eclipse通过特殊方式访问。
3)Copy required libraries into a sub-folder next to the generated JAR:将自己写的class文件打成一个jar包,将第三方jar包放到旁边的一个子文件夹。
一般选第一项就可以了,然后点击finish,打包完成。
7、在Linux上的执行方式参考:
如果把打的jar包和xml文件放在同一个目录下,且jar的可执行权限是开放的,就可以用下面的脚本直接执行:
java -jar ./TableBas.jar SOR.LDAPD_YIXIN_MSG.20141221.M.xml oracleDDL
jar包文件后面的第一个参数是xml文件名,第二个参数是表结构信息的节点属性名,执行以后表结构就直接打印出来啦。
2、执行环境:Linux/UNIX
3、实现思路:新建一个java工程,主函数设置两个入参,一个是文件路径,一个是包含表结构信息的节点属性名,java程序执行的时候带上入参,直接将解析后的结果用字符串的方式打印出来
4、xml文件格式参考:
<?xml version="1.0" encoding="UTF-8"?> <beans> <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="table_bas"> <property name="db2TabName"> <value>SOR.LDAPD_YIXIN_MSG</value> </property> <property name="oracleDDL"> <value>( CLNDR_DT_ID number(10), STD_PRVNCE_CD varchar2(20), CITY_ID varchar2(20), PD_INST_ID varchar2(50), COL_DATE varchar2(20), COL_UID number(10), COL_PHONE varchar2(40), COL_OS varchar2(20), COL_CARRIER varchar2(20), COL_COUNTRY varchar2(100), COL_PROVINCE varchar2(50), COL_CITY varchar2(100), COL_FEED number(19), COL_VOICELEFT number(19), COL_VLDURATION number(19), COL_TEXT number(19), COL_AUDIO number(19), COL_VIDEO number(19), COL_IMAGE number(19), COL_LBS number(19), COL_CARD number(19), COL_EMOTION number(19), COL_MUSIC number(19), COL_SMS number(19), COL_NAT_CALL number(19), COL_NEW_TEAMS number(10), COL_READFC number(5), COL_LOGIN_CNT number(19), FILE_CLNDR_DT_ID number(10), CRTD_TMST date, WORK_DT date )</value> </property> <property name="dataFileSeqList"> <value>1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63</value> </property> </bean> </beans>5、java代码参考:(需要在工程属性--Java Build Path--Libraries中引入外部jar包jdom.jar)
import java.io.File; import java.io.IOException; import java.util.List; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; public class TableDDLByXml { public static void main(String args[]) throws JDOMException, IOException { SAXBuilder builder = new SAXBuilder(false); String path = args[0];//文件路径+文件名 Document doc = (Document) builder.build(new File(path)); Element root = doc.getRootElement(); List<Element> list = root.getChildren();//root:beans for (Element i : list)//beans的所有子元素bean { List<Element> element = i.getChildren();//bean的所有子元素property for (Element property : element) { //获取name属性值 String name = property.getAttributeValue("name"); if (name.equals(args[1]))//oracleDDL或commentDDL { //获取子元素capacity文本值 String value = property.getChildText("value"); System.out.println(value); } } } } }6、打jar包:要打成可执行jar包,低版本的eclipse可能没有这个功能。
在工程上右键--export,选择Runnable JAR file,而不是JAR file,如下图,点击下一步:
本地run的时候会有执行的配置信息,在下一步的界面中可以直接选择这个配置,里面包含了指定主函数所在的java类。对于要输入参数的main方法,在配置run的信息时,把参数写在Program arguments中,多个参数用空格隔开。下一步的配置界面如下图:
Library handling就是专门处理引用的外部jar包的,三个选项的含义如下:
1)Extract required libraries into generated JAR:将所有用到的class文件(包括自己写的和第三方包里的),打成一个jar包,第三方的在新打的jar包中直接以class方式存放
2)Package required libraries into generated JAR:将自己写的class文件打成一个jar包,把第三方jar包原封不动的打进这个新jar包里,第三方jar包的class要经过两次解压才能看到,这种方式下的第三方jar包对jvm不可见,eclipse通过特殊方式访问。
3)Copy required libraries into a sub-folder next to the generated JAR:将自己写的class文件打成一个jar包,将第三方jar包放到旁边的一个子文件夹。
一般选第一项就可以了,然后点击finish,打包完成。
7、在Linux上的执行方式参考:
如果把打的jar包和xml文件放在同一个目录下,且jar的可执行权限是开放的,就可以用下面的脚本直接执行:
java -jar ./TableBas.jar SOR.LDAPD_YIXIN_MSG.20141221.M.xml oracleDDL
jar包文件后面的第一个参数是xml文件名,第二个参数是表结构信息的节点属性名,执行以后表结构就直接打印出来啦。
相关文章推荐
- Oracle中通过游标执行带参数的存储过程实现解析CLOB字段内的xml字符串:
- sax解析xml文档实现打印xml(遍历全部和指定位置)
- 如何在C#中用程序执行指定的SQL脚本文件,实现自动安装创建数据库.txt
- java读取数据库字段和值,输出到regedit,xml,text,excel,pdf的程序
- 用Qt读取xml文件,程序执行到 if(!doc.setContent(&file)) 时候出错
- shell程序之逐行读取一文件中的参数且使用此参数每次执行5分钟
- java中用DOM解析XML文档程序实现
- McbXML,codeguru上找的xml解析程序,c语言实现,没用到任何库
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- python 执行c 程序解析 xml 写入文本文件统计程序
- 分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要)
- javascrpt DOMDocument查找xml指定节点实现程序
- Shell脚本实现每个工作日定时执行指定程序(学习记录)
- 读取Clob字段的xml并解析此xml
- javascrpt DOMDocument查找xml指定节点实现程序
- flashAS实现远程服务器xml数据读取解析
- AutoCAD2014 加载第三方的程序,弹出“可执行文件超出指定的受信任的位置”的解决方法
- 在指定位置读取hibernate.cfg.xml
- 分享非常有用的Java程序 (关键代码)(六)---解析/读取XML 文件(重要)
- Oracle中通过Function,存储过程,触发器,调用实现解析Clob字段中存在的xml字符串