java的使用Pair要導入什么包,第三方jar包的使用

被導入的外部類所在源文件通常要打包成jar包,java中的jar文件裝的是 .class 文件。它是一種壓縮格式和zip兼容,被稱為jar包。

JDK提供的許多類,也是以jar包的形式提供的。在用的時候呢,你的文件里有很多個類,把這些類和他們的目錄一起壓縮到一個文件中發布出去的。使用者拿到這個jar包之后,只要讓CLASSPATH的設置中包含這個jar文件,java虛擬機在裝載類的時候,就會自動解壓這個jar文件,并將其當成目錄,然后在目錄中查找我們所要的類及類的包名和所對應的目錄的結構。

jar包的打包步驟如下

[root@localhost test]# javac -d . Shoes.java???????????? #編譯

[root@localhost test]# jar -cvf shoejar.jarcom??????????#打包,注意將目錄也要包含進去

added manifest

adding: com/(in = 0) (out= 0)(stored 0%)

adding: com/dangdang/(in = 0) (out= 0)(stored 0%)

adding: com/dangdang/shoe/(in = 0) (out= 0)(stored0%)

adding: com/dangdang/shoe/Shoes.class(in = 771)(out= 466)(deflated 39%)

這樣就得到了一個jar包,我們可以使用unzip解壓驗證一下,如

[root@localhost test]# unzip shoejar.jar

Archive:?shoejar.jar

creating:META-INF/

inflating:META-INF/MANIFEST.MF

creating:com/

creating:com/dangdang/

creating: com/dangdang/shoe/

inflating:com/dangdang/shoe/Shoes.class

可見,jar包中只有類文件。拿到jar包后,該如何使用?

假如jar包存放在如下位置

[root@localhost test]# tree

.

├──Clothes.java

└──jar

└──shoejar.jar

1 directory, 3 files

[root@localhost test]#

首先編譯主類文件,這需要使用-cp或-classpath指定主文件運行所依賴的其他.class文件所在的路徑。我們嘗試編譯Clothes.java文件。如

[root@localhost test]# javac -cp ./jar/* Clothes.java

[root@localhost test]#

編譯成功,運行類文件,但是情況不妙,報找不到Class異常

[root@localhost test]# java?Clothes

i'm making a XL size cloth with color red

Exception in thread "main"java.lang.NoClassDefFoundError: com/dangdang/shoe/Shoe

atClothes.main(Clothes.java:26)

Caused by: java.lang.ClassNotFoundException:com.dangdang.shoe.Shoe

atjava.net.URLClassLoader.findClass(URLClassLoader.java:381)

at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

atsun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)

atjava.lang.ClassLoader.loadClass(ClassLoader.java:357)

... 1more

這是因為jar包中的類文件無法進行加載。

我們再次使用-cp參數指定依賴類路徑,運行

[root@localhost test]# java -cp jar/* Clothes

Error: Could not find or load main class Clothes

[root@localhost test]#

因為cp只指定了依賴類所在的jar目錄,覆蓋了默認的搜索路徑即當前目錄(即.),而當前目錄是Clothes.class文件所在目錄,因此要運行這個.class字節碼文件,需要將當前目錄也加進來(用:隔開),系統才能找到當前目錄下的Java類。

[root@localhost test]# java -cp?.:jar/*?Clothes???????????????#指定搜索路徑

i'm making a XL size cloth with color red

i'm making a pair of shoes with color red and size41

[root@localhost test]# ll

我們也可以使用java本身的類加載功能,即可以把需要加載的jar都扔到JRE_HOME/lib/ext下面,這個目錄下的jar包會在Bootstrap Classloader工作完后由Extension Classloader來加載。

[root@localhost test]# cp jar/shoejar.jar/usr/java/jdk1.8.0_181/jre/lib/ext/

[root@localhost test]# javac Clothes.java?????????????????? #編譯

[root@localhost test]# java Clothes

i'm making a XL size cloth with color red

i'm making a pair of shoes with color red and size41

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372594.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372594.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372594.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

十大最受歡迎的新Eclipse插件

Eclipse Marketplace仍然是發現有趣且相關的Eclipse插件的地方。 通過Eclipse Marketplace客戶端,每月成功安裝100,000多個基于Eclipse的產品。 我們提供了過去30天 以來所有時間最受歡迎的插件列表。 我認為看看過去12個月中最受歡迎的新插件會很有趣。 以下列出了…

在桌面顯示我電腦

打開Windows PowerShell(一個像是命令提示符的東西[藍底白字],但不是命令提示符),在Windows PowerShell內輸入cmd回車,當返回如下信息: Microsoft Windows [版本 6.2.9200](c) 2012 Microsoft Corporation。…

《Java技術》第二次作業計科1501趙健宇

(一)學習總結 1.使用Eclipse關聯jdk源代碼,查看String類的equals()方法 equals()方法截圖 “”比較的是地址。equals方法他同樣使用號進行內存地址的比較。但是equals方法重寫如果號比較不相等,…

注射php,UPDATE注射(mysqlphp)的兩個模式

一.測試環境:OS:Windowsxpsp2php:php4.3.10(mysql4.1.9apache1.3.33二.測試數據庫結構:-----start-----數據庫:test----------------------------------------------------------------表的結構userinfo--CREATETABLEuserinfo(groudidvarchar(12)NOTNULL…

JUnit的內置Hamcrest Core Matcher支持

在用JUnit和Hamcrest改進assertEquals的文章中,我簡要討論了Hamcrest “ 核心 ”匹配器與JUnit的現代版本“結合”在一起的情況。 在那篇文章中,我特別關注了JUnit的assertThat(T,Matcher)靜態方法與Hamcrest核心is()匹…

FormsAuthentication使用指南,實現登錄

一般情況下,在我們做訪問權限管理的時候,會把用戶的正確登錄后的基本信息保存在Session中,以后用戶每次請求頁面或接口數據的時候,拿到Session中存儲的用戶基本信息,查看比較他有沒有登錄和能否訪問當前頁面。Session的…

Java開發高性能網站需要關注的事

轉自:http://www.javabloger.com/java-development-concern-those-things/ 近期各家IT媒體舉辦的業內技術大會讓很多網站都在披露自己的技術內幕與同行們分享,大到facebook,百度,小到剛起步的網站。facebook,百度之類的…

mysql到oracle數據遷移,mysql數據遷移到oracle

mysql: utf-8字符集oracle: Al32UTF8步驟:1. 從mysql導出csv格式數據,導出時設置default_character_setgbk,否則會亂碼2.上傳至linux服務器(oracle服務器),用以下命令將windows的/r/n換成/r:sed -i "s//r//g" file3.將gbk編碼轉為u…

測試抽象類和模板方法模式

摘自Wikipedia,“模板方法定義了算法的程序框架。 子類可以覆蓋一個或多個算法步驟,以允許不同的行為,同時確保仍然遵循總體算法。” 通常,此模式由兩個或多個類組成,一個是提供模板方法(非抽象&#xff09…

LoadRunner性能測試結果計數器指標說明

LoadRunner性能測試結果計數器指標說明 轉載2015-09-23 09:57:13標簽:loadrunner計數器針對性能測試結果分析過程中,面對大量的測試數據,反而感覺無從下手分析。今天我們就Windows操作系統計數器中的個別被監控對象進行簡單的說明。 Memory: …

Elasticsearch之需要注意的問題(es和jdk版本)

(1)在使用java代碼操作es集群的時候 要保證本地使用的es的版本和集群上es的版本保持一致。 (2)保證集群中每個節點的JDK版本和es基本配置一致 這個很簡單,不多說。 (3)es集群中jdk版本不一致 …

oracle視圖查詢數據慢,8i查詢DBA_FREE_SPACE視圖極慢的問題

還是那套古老的8.1.7.4,在該系統上檢查表空間使用情況的SQL運行緩慢,其SQL如下:SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",SPACE - NVL(FREE_SPACE, 0) "USED_SPACE(M)",ROUND((1 - NVL(FREE_SPACE, 0) / SPACE) * 100, 2) &q…

bzoj 4332:JSOI2012 分零食

描述 這里是歡樂的進香河,這里是歡樂的幼兒園。 今天是2月14日,星期二。在這個特殊的日子里,老師帶著同學們歡樂地跳著,笑著。校長從幼兒園旁邊的小吃店買了大量的零食決定分給同學們。聽到這個消息,所有同學都安安靜靜…

并發–順序線程和原始線程

我不久前參與了一個項目,該項目的報告流程如下: 用戶會要求舉報 報告要求將被翻譯成較小的部分 每個零件的報告將基于零件/節的類型由報告生成器生成 組成報告的各個部分將重新組合成最終報告,并返回給用戶 我的目標是展示如何從錯誤的實…

借貸期末余額 oracle,應交稅費期末余額分別在借貸方表示什么

應交稅費是負債類科目,有時期末余額會在借方,有時會在貸方。因此,小伙伴們在實際的賬務處理工作中,一定要弄清楚兩者的含義。為了幫助大家進行有更進一步的理解,小編再次匯總了應交稅費期末余額分別在借貸方表示什么的…

Android學習——ListView的緩存機制

在使用ListView的時候,需要加載適配器和數據源,這篇文章主要介紹一下ListView的使用以及利用ListView的緩存機制來減少系統的初始化時間。 ListView的使用 ListView和ViewPager很類似,首先在ArrayList中存放數據源,并把它作為Adap…

C#基礎 特殊集合(棧集合、隊列集合、哈希表集合)

一、 棧: Stank,先進先出,一個一個賦值,一個一個取值,按照順序。 .count 取集合內元素的個數 .push 將元素一個一個推入集合 .pop 將元素一個一個彈出集合 .peek 查看集合中的一個元素 .clear 清空集合 Stack stnew Stack…

OSGi環境中的Servlet基本身份驗證

您首先需要獲得對OSGI HTTP Service的引用。 您可以通過聲明性服務來做到這一點。 這篇文章將集中在獲得對HTTP服務的引用之后的步驟。 注意:此職位的完整課程位于此處 通過OSGI HTTP Service注冊Servlet時,它為您提供了提供HTTPContext實現的選項。 htt…

linux夏令時配置文件,Linux夏令時是怎么調整的?

以法國巴黎為例:root121 zoneinfo]# ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime[root121 zoneinfo]# date2015年 10月 13日 星期二 03:45:09 CEST[root121 zoneinfo]# date -RTue, 13 Oct 2015 03:45:31 0200[root121 zoneinfo]# zdump -v /etc/localt…

Kali Linux滲透基礎知識整理(二)漏洞掃描

Kali Linux滲透基礎知識整理系列文章回顧 漏洞掃描 網絡流量NmapHping3NessuswhatwebDirBusterjoomscanWPScan網絡流量 網絡流量就是網絡上傳輸的數據量。 TCP協議 TCP是因特網中的傳輸層協議,使用三次握手協議建立連接。當主動方發出SYN連接請求后,等待…