我在用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(); }}