java加包
① 要在java里使用json,要用到的jar包怎麼導入
先把jar包放在項目下面,最好是新建一個專門放包的文件夾
② java如何導入包
1、首先在項目下創建一個新的文件夾,用來保存jar包。在項目名上點擊滑鼠右鍵,按順序點擊【New】→【Floder】,打開新建文件夾的窗口
③ JSP中如何導入JAVA包
1、首先在打開的項目中創建lib文件夾,並放入需要的Jar包,在編輯窗口左側列表中可查看。
④ java程序添上包就不能運行了,為什麼
將生成的class 文件放到文件夾wo 下面
然後使用java wo/Helloword 解釋運行。。
下面是我在網路上看到的一篇文章,感覺不錯! 貼上來給你!
1,什麼都別說,先跟著我來做一把
我們先找一個目錄,比如C:\myjob
然後我們建立兩個目錄,一個叫做src,一個叫做bin
C:\myjob>md src
C:\myjob>md bin
C:\myjob>dir
驅動器 C 中的卷是 LIGHTNING
卷的序列號是 3DD1-83D9
C:\myjob 的目錄
2005-12-25 14:33 <DIR> .
2005-12-25 14:33 <DIR> ..
2005-12-25 14:34 <DIR> src
2005-12-25 14:34 <DIR> bin
0 個文件 0 位元組
4 個目錄 305,123,328 可用位元組
C:\myjob>
然後我們在src目錄中去寫程序
C:\myjob>cd src
C:\myjob\src>
我們寫這么4個java文件
////A.java
package com.lightning;
public class A{
{System.out.println("com.lightning.A");}
}
////B.java
package com.lightning;
public class B{
{System.out.println("com.lightning.B");}
}
////C.java
package com;
public class C{
{System.out.println("com.C");}
}
////Test.java
package net.test;
import com.lightning.*;
import com.*;
public class Test{
public static void main(String[] args)
{
new A();new B();new C();
System.out.println("net.test.Test");
}
}
寫好之後就是這樣
C:\myjob\src>dir
驅動器 C 中的卷是 LIGHTNING
卷的序列號是 3DD1-83D9
C:\myjob\src 的目錄
2005-12-25 14:34 <DIR> .
2005-12-25 14:34 <DIR> ..
2005-12-25 14:39 86 A.java
2005-12-25 14:40 86 B.java
2005-12-25 14:42 194 Test.java
2005-12-25 14:43 68 C.java
4 個文件 434 位元組
2 個目錄 305,106,944 可用位元組
然後我們建立com目錄,com\lightning\目錄,net\test\目錄
C:\myjob\src>md com
C:\myjob\src>md com\lightning
C:\myjob\src>md net\test\
我們將Test.java放入net\test\中去
將A.java,B.java放入com\lightning\中去
將C.java放入com\中去
C:\myjob\src>move Test.java net\test\
C:\myjob\src>move A.java com\lightning\
C:\myjob\src>move B.java com\lightning\
C:\myjob\src>move C.java com\
然後我們在c:\myjobs中發令:
C:\myjob\src>cd ..
C:\myjob>javac -sourcepath src -d bin src\net\test\Test.java
然後我們看看bin目錄中多了什麼
C:\myjob>dir bin /s
驅動器 C 中的卷是 LIGHTNING
卷的序列號是 3DD1-83D9
C:\myjob\bin 的目錄
2005-12-25 14:34 <DIR> .
2005-12-25 14:34 <DIR> ..
2005-12-25 14:46 <DIR> net
2005-12-25 14:46 <DIR> com
0 個文件 0 位元組
C:\myjob\bin\net 的目錄
2005-12-25 14:46 <DIR> .
2005-12-25 14:46 <DIR> ..
2005-12-25 14:46 <DIR> test
0 個文件 0 位元組
C:\myjob\bin\net\test 的目錄
2005-12-25 14:46 <DIR> .
2005-12-25 14:46 <DIR> ..
2005-12-25 14:46 520 Test.class
1 個文件 520 位元組
C:\myjob\bin\com 的目錄
2005-12-25 14:46 <DIR> .
2005-12-25 14:46 <DIR> ..
2005-12-25 14:46 <DIR> lightning
2005-12-25 14:46 338 C.class
1 個文件 338 位元組
C:\myjob\bin\com\lightning 的目錄
2005-12-25 14:46 <DIR> .
2005-12-25 14:46 <DIR> ..
2005-12-25 14:46 354 A.class
2005-12-25 14:46 354 B.class
2 個文件 708 位元組
所列文件總數:
4 個文件 1,566 位元組
14 個目錄 305,057,792 可用位元組
然後我們執行,同樣在c:\myjobs\下發令
C:\myjob>java -cp bin net.test.Test
com.lightning.A
com.lightning.B
com.C
net.test.Test
2,從實踐到理論
剛才我用一個非常簡單但是非常完整的例子給大家演示了java的package機制。
為什麼以前腦海裡面那麼簡單的javac會搞得這么復雜呢?
實際上它本就這么復雜,
並不是一個.java,一行javac一個當前目錄中的class這么簡單。
首先我要打破一些東西,然後才好建立一些東西。
javac並非只是給一個.java編譯一個class的。javac自帶有make機制,也就是說,如果在
javac的參數中java文件使用到的任何類,javac首先會去找尋這個類的class文件存在與否
,如果不存在,就會在sourcepath中找尋源代碼文件來編譯。
什麼是sourcepath呢?sourcepath是javac的一個參數,如果你不加指定,那麼sourcepath
就是classpath。
比如我們裝好jdk之後,我說過不要設定classpath環境變數,因為大部分人一旦設定了
classpath,不是多此一舉把什麼dt.jar放進去。(我可以好好打擊你一下,告訴你一個可
悲的事實——jre永遠不會從你這個classpath中去尋找dt.jar。你完全是徒勞的!)就是
把"."搞不見了,搞得是冷水一盆盆的往自己身上潑,腦袋一點點的漲大。
不要設!classpath沒有你想像中那麼普適和強大,它只是命令行的簡化替代品。
你不設的話它就是"."。
回到sourcepath,sourcepath指的是你源代碼樹的存放地點。
為什麼是源代碼樹?而不是一個目錄的平板源代碼呢?
請大家將原本腦海中C的編譯過程完全砸掉!
java完全不同,java沒有頭文件,每個.java都是要放在源代碼樹中的。
那麼這顆樹是怎麼組織的呢?
對了,就是package語句。
比如寫了package com.lightning;
那麼這個.java就必須放在源代碼樹根\的com\lighting\之下才行。
很多浮躁的初學者被default打包方式寵壞了。自我為中心,以為java就是一套庫,自己寫
的時候最多import進來就行了,代碼從不打包,直接javac,直接java,多麼方便。
孰不知自己寫的這個.java也不過是java大平台的其中一個小單元而已。如果不打包,
我寫一個Point,你寫一個Point,甚至更有甚者敢於給自己的類起名叫String等等。
全部都在平板式的目錄中,那jre該選哪一個?
一旦要使用package語句,就要使用代碼樹結構,當然,你要直接javac,也行。
不過javac出來的這個class要放在符合package結構的目錄中才能發揮正常作用,否則就是
廢物一坨。
而且,如果你這個.java還用到其它自己寫的有package語句的.java,那這個方法就回天乏
術了。
按照sun的想像,應該是寫好的.java放在符合package結構的目錄中,package語句保證了
正確放置,如果目錄位置和package語句中指示的不同,則會出錯。
所以按照剛才我們的那種package寫法,我們必然要將那幾個.java文件放入相應的目錄中
才能讓javac順利找到他們來make。
有人說javac可不可以像java那樣 java aaa.bbb.c...java?
不可以
javac中的那個.java文件參數必須是一個文件系統的路徑文件名形式。
然後如果用到其它的.java,javac會根據目前的sourcepath出發尋找目錄結構中的那些
java文件。
當然了,既然打了包,在使用的時候。
要麼寫全名——包名.類名
或者使用import
不得不提的是,import就好比c++的using,它不負責做文件操作,它只是方便你寫代碼。
另外import語句中的*代表的是類名,不代表包名片斷。
你import com.*;
編譯器仍然找不到com.lightning中的任何類。
反之亦然。
就好象你告訴編譯器,我這裡面要用到姓諸葛的人。
那麼姓諸的人當然編譯器不會認為也包含在內。
所以,如果程序一旦寫到一定規模。
就不得不使用ant來管理這些。
或者使用IDE,否則jdk就真的變成了java developer killer。
但是對於初學者,在了解為什麼會有ant之類的之前,還是要體會一下使用
jdk的艱辛。
這個和以前在unix上開發的人用gcc命令行到後來使用make之後使用ide
之類的時候的體會是類似的。
最後,javac的-d參數是指示編譯出來的class文件放在哪裡的,如果你不指定的話,它們
和.java混在一起。當然也符合目錄結構。