1,创建一个java project,完成编码
在Eclipse的资源管理器中选中你要打包的项目,右键点击,选择“导出”项,弹出导出对话框,在下面的Java目录下选择“JAR 文件”项,下一步,在导出目标路径TextField框中输入你想保存的路径,单击“完成”。
1 package com.lxl.it.test; 2 3 import org.apache.commons.net.ftp.FTP; 4 import org.apache.commons.net.ftp.FTPClient; 5 import org.apache.commons.net.ftp.FTPFile; 6 7 public class TestFtp1 { 8 public static void main(String[] args) throws Exception { 9 FTPClient ftpclient = new FTPClient(); 10 // String host = "10.202.33.210"; 11 // Integer port = 21; 12 // String user = "hht"; 13 // String password = "hht"; 14 // String path="/HHT/hht5picture/CUR/991406990562/"; 15 16 String host = args[0];//"10.202.4.80"; 17 Integer port = Integer.valueOf(args[1]);//21; 18 String user = args[2];//"lixiaolong"; 19 String password = args[3];//"sf123456"; 20 String path = args[4];//"/home/lixiaolong/SUCC/963123456789"; 21 String character = args[5];//ISO-8859-1 22 String swit = args[6];//ISO-8859-1 23 // FTP连接 24 ftpclient.connect(host, port); 25 // FTP登陆 26 ftpclient.login(user, password); 27 FTPFile[] files = null; 28 // ftpclient.setFileType(FTP.ASCII_FILE_TYPE); 29 ftpclient.setFileType(FTP.BINARY_FILE_TYPE); 30 // ftp服务器接收数据为被动模式,需要客户端主动链接服务端后才进行传输 31 ftpclient.enterLocalPassiveMode(); 32 // 设定ftp传输模式为字符流模式 33 ftpclient.setFileTransferMode(FTP.STREAM_TRANSFER_MODE); 34 // 检查文件是否存在,若不存在则返回false 35 ftpclient.changeWorkingDirectory(path); 36 files = ftpclient.listFiles(); 37 for (FTPFile ftpFile : files) { 38 String fileName = ftpFile.getName(); 39 if("1".equals(swit)){ 40 fileName = new String(fileName.getBytes(character), "UTF-8"); 41 } 42 System.out.println(fileName); 43 } 44 } 45 }
2,
进入Step1中保存jar文件的目录下,用压缩文件管理器打开jar文件,进入META-INF\目录下,打开MINIFEST.MF文件,对MINIFEST.MF文件进行编写,格式如下:
请在文本格式下编写,每个空处只有一个空格,文本不能多余两个空行
Manifest-Version: 1.0 告诉我们使用的是1.0的manifest文件,第一行定义manifest的格式
Main-Class: 主程序入口类名(注意:如果主程序带包,main函数在com包下的test.java中,则写如:com.test)
Class-Path: 引用包路径,包之间空格隔开(lib是和test.jar同目录的一个子目录,test.jar要引用的some.jar包就在这里面。例如:Class-Path: lib/some.jar lib/some2.jar)
Created-By: 创建者信息
注意冒号后面有一个空格
Manifest-Version: 1.0
Main-Class: com.lxl.it.test.TestFtp1
Class-Path: lib/commons-net-current.jar
3
建立批处理文件.bat或.cmd如下start.cmd: cmd中开启jar程序命令: java -jar testCmd4.jar
java -jar testCmddata2.jar "10.202.4.80" 21 "lixiaolong" "sf123456" "/home/lixiaolong/SUCC/963123456789" "ISO-8859-1" “0”
bat
新建txt 输入如下类容,改后缀为bat文件 另起一行输入pause防止批处理完成后立即关闭
java -jar d:/test/123/FTP/testCmddata2.jar "10.202.4.80" 21 "lixiaolong" "sf123456" "/home/lixiaolong/SUCC/963123456789" "ISO-8859-1" “0”
如果需要把程序打包成jar文件,并且该jar文件依赖了比较多的第三方jar包,手动操作些MANIFEST.MF会出现比较多的问题,需要注意:
1 在Class-Path中指明依赖的jar包,如果jar文件存放在lib目录下存在两种放置方式:
a 如果是在你的jar文件中打入了lib目录,则Class-Path中指明的目录是lib/2.jar lib/2.jar
b 如果是在你的jar文件所在目录平级存放lib目录,与把lib放入jar文件一样,都是在Class-Path中指明的目录是lib/2.jar lib/2.jar
2 如果使用eclipse打包并选择已存在的MANIFEST.MF文件时,行不能过长,否则报错。这时你需要换行,换行是需要注意:
a 新行的开头使用空格,不能直接顶格
b jar文件行尾需要有空格,即需要保证jar文件前后都有空格,如“ lib/1.jar "
3 MANIFEST.MF文件写完后需要连续两行回车,并且新行需要顶格
Class-Path: lib/httpclient-4.2.3.jar
lib/commons-logging.jar
lib/commons-codec-1.4.jar
lib/commons-httpclient.jar