这里,我们探讨的Windows和Linux环境下如果使用Java开发C/S结构的程序(命令行模式)。

 

案例背景,采购员希望每天定时收到未来三天内到货提醒。我提示采购员可以在ERP系统中查询到,但是他们说麻烦。如果登陆一下系统也闲麻烦的话,估计做这个提醒也不会起什么作用。既然业务部门提出需求,我们就得响应啊。ERP系统在Linux服务器上,使用的是Oracle数据库,通过一句sql很容易查询到未来三天的到货物品明细记录。

 

开始动手吧。

 

先安装JDK,并配置好环境变量JAVA_HOME和CLASSPATH,在Windows命令提示符或Linux命令行中输入java –version,能够成功打印java版本信息就说明安装好了。如果你不知道如何配置环境变量,请参照环境变量配置章节。

Windows环境下安装JDK

安装文件jdk-6u3-windows-i586-p.exe,自动安装后,配置环境变量

JAVA_HOME=C:\Program Files\Java\jdk1.6.0_03

CLASSPATH= C:\Program Files\Java\jdk1.6.0_03\lib\dt.jar; C:\Program Files\Java\jdk1.6.0_03\lib\ tools.jar;

 

 

 

Linux环境下安装JDK

安装文件jdk-6u16-linux-i586.rpm

通过命令 rpm –ivh jdk-6u16-linux-i586.rpm

然后在/etc/profile中配置环境变量

JAVA_HOME=/usr/java/jdk1.6.0_16;export JAVA_HOME

PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/opt/ErpQuery/bin/:/opt/ErpQuery/lib/ojdbc14.jar;export CLASSPATH

 

 

安装Eclips Java Develpoer版本。

 

Windows环境

使用Eclips创建一个Java项目ErpQuery

配置lib路径,将ojdbc14.jar添加到项目。

新建ErpQueryMain.java文件

内容如下:

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
 
public class ErpQueryMain {
public static void main(String[] args)
         {
//还是传统些,打印一下Hello World!吧
try
                   {
                            String DB_URL = "jdbc:oracle:thin:@192.168.0.1:1521:erp";
                            String DB_DRIVER = "oracle.jdbc.driver.OracleDriver";
                            String DB_USERNAME = "username";
                            String DB_PASSWORD = "password";
                            Connection conn = null;
                            Class.forName(DB_DRIVER);
//建立连接
                            conn = DriverManager.getConnection(DB_URL,DB_USERNAME,DB_PASSWORD);                                  Statement s = conn.createStatement();
                            String sql = "select name from dual";
                            ResultSet rs = s.executeQuery(sql);
                            System.out.println("采购员");
                            while(rs.next())
                            {
//打印rs数据集中第一列
                            }
                            s.close();
//关闭数据库链接
                            if(!conn.isClosed()){
                                      conn.close();
                            }
                   }
                   catch(Exception ex){ex.printStackTrace();}
         }
}
在Eclips中按Ctrl+S,ErpQueryMain.java会自动编译成ErpQueryMain.class,可以在bin目录下找到。
 
打开命令提示符,设置好环境变量CLASSPATH,
E:\ErpQuery\bin>
E:\ErpQuery\bin\>set CLASSPATH = .%CLASSPATH%;E:\ErpQuery\bin\;E:\ErpQuery\lib\ojdbc14.jar;
E:\ErpQuery\bin\>echo %CLASSPATH%
E:\ErpQuery\bin\>java ErpQueryMain

 

我通常的做法是创建一个start.bat批处理文件

set path=C:\Program Files\Java\jdk1.6.0_03\bin;

set CLASSPATH = .%CLASSPATH%;E:\ErpQuery\bin\;E:\ErpQuery\lib\ojdbc14.jar;

java ErpQueryMain

使用start.bat总会有个黑色的命令窗口,如何把他隐藏呢?

办法总是有的,

创建一个start.vbs文件

Set ws = CreateObject("Wscript.Shell")

ws.run "cmd /c start.bat",vbhide

本案例中,不合适,我们只有通过控制台才能看到输出。

 

 

Linux环境

我们并不打算在Linux上进行Java程序开发,只需要知道怎么部署就可以了。

将ErpQuery文件夹上传到Linux上,例如/opt/ErpQuery,

 

配置环境变量CLASSAPTH

[root@localhost opt]#CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/opt/ErpQuery/bin/:/opt/ ErpQuery /lib/ojdbc14.jar;

[root@localhost opt]#export CLASSPATH

[root@localhost opt]#echo $CLASSPATH

[root@localhost opt]#:/usr/java/jdk1.6.0_16/lib/dt.jar:/usr/java/jdk1.6.0_16/lib/tools.jar:/opt/ErpQuery/bin/:/opt/ErpQuery/lib/ojdbc14.jar

创建start.sh文件

[root@localhost opt]#cd ErpQuery

[root@localhost ErpQuery]#cd bin

[root@localhost bin]#vi start.sh

#!/bin/sh

java ErpQueryMain > data.log

#iconv --from-code UTF-8 --to-code GBK -c data.log > data1.log

[root@localhost bin]# sh start.sh

这就可以了

iconv --from-code UTF-8 --to-code GBK -c data.log > data1.log这一句很重要,默认情况下Linux产生的文件是UTF-8格式的,如果要直接看的话,将显示是乱码,但可以通过iconv命令转换文本文件编码格式。

 

如果你要在cron中执行java程序,那么还需要做一些设置工作。Cron是Linux下的一个定时器,通过cron执行bash脚本时,并不会加载环境变量,所以要手动配置上。

#这一句很关键,如果不是正确的字符编码的话,通过java程序输出的中文很可能是乱码。

export LANG=zh_CN.GB2312

#定义临时环境变量

JAVA_HOME=/usr/java/jdk1.6.0_16

CLASSPATH=/usr/java/jdk1.6.0_16/lib/dt.jar:/usr/java/jdk1.6.0_16/lib/tools.jar:/opt/ErpQuery/bin/:/opt/ ErpQuery /lib/ojdbc14.jar

#注意参数-classpath要指定

$JAVA_HOME/bin/java -classpath $CLASSPATH ErpQueryMain