日期:2014-05-20  浏览次数:21086 次

有人能帮我解释程序包org.apache.commons.lang的使用问题吗
我在用jdk自带的javac、java命令编译执行程序,没有使用eclipse等软件,使用的jdk版本jdk7(下载的安装程序为jdk-7-windows-i586)。
  我的一个程序中引入了软件包(import org.apache.commons.lang.ArrayUtils;),用javac编译程序后,命令行提示“软件包org.apache.commons.lang不存在”。
  这是我头一次使用这个包,现在已经知道这是一个第三方软件包,我已经下载了(commons-lang3-3.0.1-bin.tar,commons-lang3-3.0.1-bin)两个压缩文件(两个压缩文件内容好像完全一样),并解压了(commons-lang3-3.0.1-bin)文件到目录E:\down\commons-lang3-3.0.1,其中包含了两个jar文件(commons-lang3-3.0.1、commons-lang3-3.0.1-tests)和三个文本文件(lisence、notice、release_notice),谁能解释:
  1、commons-lang3-3.0.1-bin.tar,commons-lang3-3.0.1-bin两个压缩文件的作用和差异
  2、commons-lang3-3.0.1、commons-lang3-3.0.1-tests两个jar文件的作用和差异
  程序编译不通过,我尝试了两种方式但都不成功:
  1、复制commons-lang3-3.0.1、commons-lang3-3.0.1-tests两个jar文件到我的java安装目录中的(E:\Program Files\Java\jdk1.7.0\lib),用javac编译程序后,命令行提示“软件包org.apache.commons.lang不存在”。
  2、在用户变量中新建变量名(CLASSPATH)变量值(E:\down\commons-lang3-3.0.1;.;),用javac编译程序后,命令行提示“软件包org.apache.commons.lang不存在”。(在安装jdk时建立的变量名Path变量值E:\Program Files\Java\jdk1.7.0\bin同时存在)
  谁能帮我解释出错的原因,该如何处理?怎样才能让org.apache.commons.lang包向jdk自带包一样,一旦import后,就可正常引用和使用?


------解决方案--------------------
事实是你的程序的问题,import 的ArrayUtils是commons-lang1而你自己使用的是commons-lang3的版本,所以无论怎么设置都找不到,给你改了代码,贴出来如下,这次肯定能正常编译运行了
Java code

import org.apache.commons.lang3.ArrayUtils;

import java.util.*;
//import org.apache.commons.lang.ArrayUtils;

public class ShowHand{
  private String[] types={"\4","\5","\3","\6"};
  private String[] values={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
  private final int PLNUM=5;
  private LinkedList<String> cards=new LinkedList<String>();
  private String[] players=new String[PLNUM];
  private List<String>[] playersCards=new LinkedList[PLNUM];

  void initCards(){

    for(int i=0;i<types.length;i++)
    {
        for(int j=0;j<values.length;j++)
        {
            cards.add(types[i]+values[j]+"  ");
        }
    }
    Collections.shuffle(cards);
  }

  boolean initPlayers(String... names){
     if(names.length<2||names.length>PLNUM)
     {
        System.out.println("players nubember error.");
        return false;
     }
    for(int i=0;i<names.length;i++)
    {
        players[i]=names[i];
    }
    return true;
   }

   void initPlayersCards()
  {
     for(int i=0;i<players.length&&players[i]!=null;i++)
     {
        playersCards[i]=new LinkedList<String>();
     }
  }

  boolean deleverCards(String first){
     boolean find=false;
     for(int i=0;i<players.length && (players[i]!=null);i++){
      if(first==players[i]){
           find=true;
           break;
        }
     }
      if(find==false){
            System.out.println("name error.");
            return false;
        }
//      int firstPos= ArrayUtils.search(players,first);
      //下面是common-lang3的API调用
      int firstPos= ArrayUtils.indexOf(players,first);
      for(int i=firstPos;i<players.length && (players[i]!=null);i++){
           playersCards[i].add(cards.pollFirst());
        }
     for(int i=0;i<firstPos;i++){
           playersCards[i].add(cards.pollFirst());
        }
      return find;
  }

  ShowHand(String... names){
     initCards();
     initPlayers(names);
     initPlayersCards();
  }

  void showCards(){
     for(String c:cards)
       System.out.print(c+"  ");
    System.out.println();
  }

  void showPlayersCards(){
     for(int i=0;i<players.length&&(players[i]!=null);i++)
     {
         System.out.print(players[i]+": ");
         for(String c:playersCards[i])
             System.out.print(c+"  ");
         System.out.println();
     }
  }

  public static void main(String[] args)
  {
     ShowHand showHand=new ShowHand("li","liu","zhang","bai");
     for(int i=0;i<5;i++)
       showHand.deleverCards("bai");
    showHand.showPlayersCards();

  }

}