在Linux下運行引入了外部jar包的java程序


如圖:H.java里引入了commons-io-2.2.jar

代碼如下:

import org.apache.commons.io.IOUtils;
public class H{
    public static void main(String[] args){
        String[] a = { "/bin/sh", "-c","iptables -nvL --line"};
        process1(a);
    }
    public static void process1(String[] cmdarray) {
        try {
            final Process p = Runtime.getRuntime().exec(cmdarray);
            String info = IOUtils.toString(p.getInputStream());
            String error = IOUtils.toString(p.getErrorStream());
            System.err.println(info);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

編譯:

javac -cp ./commons-io-2.2.jar H.java 

運行

[root@localhost javarun]# java -cp $CLASSPATH:commons-io-2.2.jar H
Chain INPUT (policy ACCEPT 2348K packets, 254M bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        3   152 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:8080 
2        3   152 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:1111 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1805K packets, 179M bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        3   120 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:8080 

復制一個網絡教程:

1、將外部jar包(javacsv.jar)放在Linux路徑下面。
如/home/cys/lib
2、將需要編譯的java文件(CsvTest.java)放在Linux路徑。如/home/cys/test
3、編譯已經寫好的java文件,命令如下:
javac -cp /home/cys/lib/javacsv.jar /home/cys/lib/CsvTest.java
生成CsvTest.class文件。
4、運行程序,命令如下:
java -cp $CLASSPATH:/home/cys/lib/javacsv.jar:/home/cys/lib/CsvTest CsvTest

結果運行正確

需要注意的幾點是:
1、編譯的時候,需要使用-cp環境變量來引入外部jar的地址。-cp也可以換成-classpath。
2、運行過程中,環境變量-cp中一定要加入編譯時候生成的class文件的路徑。並且用冒號分割

windows下環境變量是使用引號分割的。但是在Linux下環境變量需要使用冒號分割

 

 

Linux下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM