<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java程序關于第三方jar包發布的另一種方法(從老金的博客中拷來的)

    java程序關于第三方jar包發布的另一種方法

        大概我們每個人都有過這種經歷,編好了一個應用,當打成jar包后,當引用第三包時卻總是拋ClassNotFoundException 而無法正常運行。我現在知道的有兩種解決方法,一種是在manifest.mf中設置classpath,把所需的第三方包手動加進去,還有一種就是用是用第三方打包工具了,比如fatjar。今天察看Jmeter的源代碼時發現了另一種方法。為了更清楚些,下面進行舉例進行說明:
          先新建一個工程,建一個類,源代碼如下:
         package first;
        import java.util.Date;
        public class My {
           public String getTime(){
                return new Date().toString();
          }
       }
        然后把它打成包,用來模擬第三方包,不妨取名first.jar.
       然后,再建第二個工程,把剛才的包加入到這個工程中,新建類如下:
      package mypackage;
      import first.My;
      public class Task {
        public void start(String [] args){
            My my = new My();
            System.out.println(my.getTime());
        }
     }
      start()方法作為咱們整個應用的入口函數,經測試發現沒有問題。到此,準備工作完畢,下面開始進行解決問題的關鍵部分了:
      新建類NewDrever,其源代碼如下:
                                       package mypackage;
                                       import java.io.File;
                                        import java.io.FilenameFilter;
                                        import java.lang.reflect.Method;
                                        import java.net.MalformedURLException;
                                        import java.net.URL;
                                        import java.net.URLClassLoader;
                                        import java.util.LinkedList;
                                        import java.util.List;
                                        public class NewDrever {
                                                    public static void main(String [] args){
                                                                    File userDir = new File(System.getProperty("user.dir"));
                                                                    String jmDir = userDir.getAbsoluteFile().getParent();
                                                                    File libDirs = new File(jmDir+File.separator+"lib");
                                                                    File [] libJars = libDirs.listFiles(new FilenameFilter(){
                                                                    public boolean accept(File dir,String name) {
                                                                                            if(name.endsWith(".jar"))
                                                                                                    return true;
                                                                                                return false;
                                                                    }
                                                                        });
                                                                List jars = new LinkedList();
                                                                //System.out.println(System.getProperty("java.class.path"));
                                                                StringBuffer classpath = new StringBuffer();
                                                                for(int i = 0;i < libJars.length;i++){
                                                                try {
                                                                                    jars.add(new URL("file","",libJars[i].getPath()));
                                                                                    classpath.append(System.getProperty("path.separator"));
                                                                                    classpath.append(libJars[i].getPath());
                                                                    } catch (MalformedURLException e) {
                                                                                            e.printStackTrace();
                                                                                                }
                                                        }
                                                        System.setProperty("java.class.path",System.getProperty("java.class.path")+classpath.toString());
                                                        //System.out.println(System.getProperty("java.class.path"));
                                                        URLClassLoader loader = new URLClassLoader((URL[])jars.toArray(new URL[0]));
                                                        //Thread.currentThread().setContextClassLoader(loader);
                                                        try {
                                                                    Class JMeter = loader.loadClass("mypackage.Task");
                                                                    Object instance = JMeter.newInstance();
                                                                    Method startup = JMeter.getMethod("start",new Class[]{(new String[0]).getClass()});
                                                                    startup.invoke(instance,new Object[]{args});
                                                            } catch(Exception e) {
                                                                        e.printStackTrace();
                                                            }
                                    }
                        }
        把第二個工程打成可執行的jar包,取名second.jar,新建一個文件夾,不妨取名為Test,test下面分別建lib和bin兩個文件夾,把first.jar和second.jar拷貝到lib中,把second.jar再考到bin下面一份。現在還沒有完畢,把bin下的second.jar的包中除了
    NewDrever.class全部刪掉,至此完畢。這時,進到bin目錄下 敲java -jar second.jar 會在控制臺打出當前的時間。而時間來自"第三方包"。

    posted on 2007-07-10 10:50 liujg 閱讀(787) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    boddiy

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久热免费在线视频| 日本一区午夜艳熟免费| 青青草免费在线视频| 中文字幕亚洲免费无线观看日本| 国产一级片免费看| 亚洲欧洲日产国产综合网| 小日子的在线观看免费| 亚洲国产人成网站在线电影动漫| 久久精品一本到99热免费| 亚洲欧洲精品国产区| 一二三四免费观看在线视频中文版 | 黄网址在线永久免费观看| 亚洲人成电影网站色| 日韩电影免费在线| 猫咪免费人成在线网站| 伊人亚洲综合青草青草久热| 国产在线观看免费视频软件| 久久久亚洲欧洲日产国码是AV| 18勿入网站免费永久| 国产亚洲精品VA片在线播放| 日本二区免费一片黄2019| 免费无遮挡无码视频在线观看| 久久久久亚洲av成人无码电影 | 99视频在线免费看| 亚洲www77777| 亚洲国产精品成人久久蜜臀| 最好免费观看高清在线| 亚洲jizzjizz在线播放久| 国产精品无码免费视频二三区| 国产激情久久久久影院老熟女免费| 久久精品国产精品亚洲色婷婷| 国产成人无码免费看视频软件| 日本一区二区在线免费观看| 亚洲av无码成人黄网站在线观看 | 免费一区二区视频| 免费无码一区二区三区 | 日本特黄特色AAA大片免费| 亚洲欧洲日韩不卡| 国产精品免费看久久久久| A片在线免费观看| 亚洲人成网站免费播放|