兩個JAR相互引用第一次編譯
① 演算法(第4版)給的兩個jar包stdlib.jar和algs4.jar要怎麼用
我只是導入了stdlib.jar,是導入到external(外部的) jars,然後編譯時還是會有問題,不過按照錯誤給的提示(忘記提示是什麼了),然後enter一下就可以了,之後編譯成功,並且在我所創建的項目中多了一個「引用 的庫」。
② 如何運行和編譯jar
一、源文件情況
源文件位置為:D:\temp,源文件名(含包名字):com.ldq.WeatherDemo.java
前提:已安裝 jdk ,並配置好環境變數。
二、過程
1、編譯:
提示符進入 D:\temp 路徑下,輸入:javac com\ldq\WeatherDemo.java
生成類文件:WeatherDemo.class
2、打包:
提示符進入 D:\temp 路徑下,輸入:jar cvf WeatherDemo.jar com\ldq\WeatherDemo.class
生成檔案文件:WeatherDemo.jar
3、修改 MANIFEST.MF 文件:
由於引用了外部的類,所以要添加引用類的路徑,即修改MANIFEST.MF文件。保存如下內容到 D:\temp下,文件名 MANIFEST.MF
Manifest-Version: 1.0
Sealed: true
Main-Class: com.ldq.WeatherDemo
Class-Path: lib/jaxrpc.jar lib/log4j-1.2.8.jar lib/mail.jar lib/saaj.jar lib/tools.jar lib/wsdl4j-1.5.1.jar lib/activation.jar lib/axis.jar lib/axis-ant.jar lib/commons-discovery-0.2.jar lib/commons-logging-1.0.4.jar
注意在後面空兩行。
提示符進入 D:\temp 路徑下,輸入:jar umf MANIFEST.MF WeatherDemo.jar
執行時會提示更新的內容。
4、添加包含引用類的相應文件:
在 D:\temp 路徑下,新建 lib 文件夾,講對應的 jaxrpc.jar ... 拷入其中,此時,即可雙擊(或在提示符下輸入:java -jar WeatherDemo.jar)運行 WeatherDemo.jar 文件了。
三、總結
雙擊運行 jar 文件時,虛擬機會到 jar 文件中下找 .MF 文件,找到對應的 Main-Class 運行,引入的類在 Class-Path 所指路徑。
事實上可以利用 winrar或winzip 工具打開 jar 文件,直接將修改好的 MANIFEST.MF 拷入覆蓋,class文件也可以做同樣的操作,節省了輸入復雜難記的命令。另外,對於 javaME 生成的 jar 文件,限制嚴格些,MANIFEST.MF 文件中有個文件大小的欄位,可以先保存,查看文件大小,再修改保存。
另一種方法是通過 Eclipse - Export - Runnable JAR file 直接生成 jar 文件,此時,所有的引用類都被打包在 jar 文件里了。
③ 把jar文件放到另一個jar中,然後載入它
做法很簡單,其實jar文件就是壓縮文件,裝了win rar/zip的話就好辦了。
首先,選中多個jar文件,點右鍵「解壓到……」某個目錄,這時候應該會有些文件重疊,主要是MANIFEST.MF,不管它,解壓完畢,把合並的信息填入MANIFEST.MF或者寫個readme,隨便你,總之最好記錄下這次歸並,為將來升級有據可查。
然後,壓縮這個文件夾內的內容,注意根目錄要正確!選擇zip格式壓縮,擴展名為jar。
最後,合並完畢,起個好名字吧。
自動合並的工具我沒找到 不好意思 希望能幫助你
④ 引入jar包編譯不存在
引入jar包編譯不存在的解決方法為:
1、打開idea的Settings,進入BuildExecutionDeployment/BuildTools/Maven/Runner,將DelegateIDE勾上。
2、把maven的setting文件中的本地倉庫地址注釋掉。關閉idea,重新載入本地倉庫文件。
3、直接在idea命令行輸入:mvnidea:idea。
⑤ java項目中jar包引用問題
你沒有把你的jar包文檔載入進項目中,項目編譯時默認只會去載入lib文件夾下的jar包,當然會找不到你放其他文件夾下的包
右擊項目=》Build Path=》ConfigureBuild Path...
添加你自己的jar包管理,點進去跟著向導做,導入你自己工程下存放的jar包文件夾就行了
⑥ 一個java程序用到了很多jar包,如何用命令行形式來編譯、運行此程序
javac -cp jar包路徑 xx.java,有多個jar包時,之間有「;」隔開:如果用引用到其它的類,則保證引入類結構良好的情況下,加上引入類所在的路徑(不包含類的包路徑)