<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下面一份?,F在還沒有完畢,把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

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 成年女人色毛片免费看| 黄网站色成年片大免费高清 | 成人最新午夜免费视频| 亚洲精品成人久久| 四虎1515hh永久久免费| 亚洲成人免费电影| 免费可以看黄的视频s色| 国产精品亚洲四区在线观看| 免费看国产精品3a黄的视频| 亚洲国产日产无码精品| 亚洲精品亚洲人成在线观看下载| 亚洲精品无码mⅴ在线观看| 四虎成人免费观看在线网址| 亚洲高清国产拍精品熟女| 在线视频免费国产成人| 色爽黄1000部免费软件下载| 久久亚洲中文字幕精品一区四 | 4399好看日本在线电影免费| 久久亚洲国产成人影院| 国产免费久久精品久久久| 一级做a爱片特黄在线观看免费看| 亚洲综合另类小说色区| free哆啪啪免费永久| 亚洲熟妇少妇任你躁在线观看| 浮力影院第一页小视频国产在线观看免费 | 日韩免费一区二区三区在线| 亚洲熟女综合一区二区三区| 全部免费毛片在线| 精品四虎免费观看国产高清午夜| 亚洲视频在线免费播放| 日本免费无遮挡吸乳视频电影| 一级做a爱片特黄在线观看免费看| 亚洲人午夜射精精品日韩| 日韩免费高清大片在线| 久久人午夜亚洲精品无码区 | 97se亚洲综合在线| 日本午夜免费福利视频| 久草视频在线免费看| 亚洲欧美不卡高清在线| 亚洲国产成人片在线观看| 毛片免费视频播放|