1. 如何讀取jar類庫包里的文件
java">Stringname=clazz.getName();
name=name.substring(0,name.lastIndexOf("."));
name=name.replaceAll("\.","/");
name=name+"/info";
InputStreaminputStream=clazz.getClassLoader().getResourceAsStream(name);
if(inputStream!=null){
BufferedReaderreader=newBufferedReader(newInputStreamReader(inputStream));
try{
serverName=reader.readLine();
}catch(IOExceptione){
e.printStackTrace();
}
serverName=serverName.trim();
}
我這個是讀取一個jar中的一個類同目錄下的info文件內容,你可以參考一下,clazz是類的Class是對象。
2. 怎麼讀取jar包裡面的
package e.hxraid;
import java.io.*;
public class Resource {
public void getResource() throws IOException{
//返回讀取指定資源的輸入流
InputStream is=this.getClass().getResourceAsStream("/resource/res.txt");
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String s="";
while((s=br.readLine())!=null)
System.out.println(s);
}
}
我們將java工程下/bin目錄中的e/hxraid/Resource.class和資源文件resource/res.txt一並打包進ResourceJar.jar中,不管jar包在系統的任何目錄下,調用jar包中的Resource類都可以獲得jar包中的res.txt資源,再也不會找不到res.txt文件了
3. 如何在pom文件中引用本地jar包
如何在pom文件中引用本地jar包,這個問題聽上去是不是有點荒唐?其實也不荒唐,有時候我們確實需要引用本地jar包,而非maven私服中的jar包,通常情況下,這種情況是要引用一些java的系統jar包。
引用的方法如下:
<dependency>
<groupId>cn.outofmemory</groupId>
<artifactId>my-tools</artifactId>
<version>2.5.0</version>
<type>jar</type>
<scope>system</scope>
<systemPath>${basedir}/lib/mylib1.jar</systemPath>
</dependency>
4. maven怎麼引jar包裡面的pom
步驟:
1.cmd命令進入該jar包所在路徑
2.執行命令:
mvn install:install-file -Dfile=lucene-queryparser-4.6.1.jar
-DgroupId=org.apache.lucene -DartifactId=lucene-queryparser
-Dversion=4.6.1 -Dpackaging=jar
其中:-DgroupId和-DartifactId的作用是指定了這個jar包在repository的安裝路徑,只是用來告訴項目去這個路徑下尋找這個名稱的jar包。
比如:
mvn install:install-file -Dfile=hadoop-hdfs-2.2.0.jar
-DgroupId=org.apache.hadoop -DartifactId=hadoop-hdfs -Dversion=2.2.0 -D
-Dpackaging=jar
就是指把hadoop-hdfs-2.2.0.jar安裝到repository\org.apache.hadoop\hadoop-hdfs\2.2.0目錄下,執行完命令後,如果需要在項目中使用這個jar,則在pom.xml中添加如下配置即可:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.2.0</version>
</dependency>
注意在每個參數前有個-D
二、怎麼在pom.xml中添加項目中libs下的jar呢,而不是從本地倉庫中添加?
1、首先將要添加的jar包復制到項目中的libs文件夾下
2、然後在pom.xml中添加如下代碼:
[html] view plain
<dependency>
<groupId>htmlunit</groupId>
<artifactId>htmlunit</artifactId>
<version>2.21-OSGi</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/htmlunit-2.21-OSGi.jar</systemPath>
</dependency>
注意scope元素和systemPath元素,其中systemPath元素指定的就是jar包在項目中的路徑。
注意libs文件夾下的這個jar包不需要Add to Build Path
5. 怎樣從JAR文件中讀取文件
進入jar文件其實沒有說的那麼困難,jar文件本質是一個zip格式的壓縮文件,只是把文件後綴名改了,要用Java讀取裡面的文件也沒有那麼想像的那麼困難。使用相關協議就可以:
例如:c盤根目錄有一個test.jar文件文件裡面有個a.txt文件我們就讀取這個a.txt文件
文件對應的URL:
jar:file:/C:/test.jar!/a.txt
Java代碼:
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
public class TestDouble {
public static void main(String[] args) throws IOException {
URL url=new URL("jar:file:/C:/test.jar!/a.txt");
System.out.println(url);
InputStream is=url.openStream();
byte b[]=new byte[1000];
is.read(b);
System.out.println(new String(b).trim());
}
}
不是很清楚你到底是從直接將jar中文件解壓出來還是通過Java將jar文件中的文件復制出來,如果是想直接解壓出文件用winrar就可以了,要用Java復制看下面這個測試,基本上和復制文件差不多:
import java.io.*;
import java.net.URL;
public class CopyFile {
public static void FormJar(String fileUrl, String dest )
throws IOException
{
int BUFF_SIZE = 100000;
byte[] buffer = new byte[BUFF_SIZE];
InputStream in = null;
OutputStream out = null;
URL url=new URL(fileUrl);
try
{
in = url.openStream();
out = new FileOutputStream( dest );
while ( true )
{
synchronized ( buffer )
{
int amountRead = in.read( buffer );
if ( amountRead == -1 )
{
break;
}
out.write( buffer, 0, amountRead );
}
}
}
finally
{
if ( in != null )
{
in.close();
}
if ( out != null )
{
out.close();
}
}
}
public static void main(String[] args) throws IOException {
args=new String[2];
args[0]="jar:file:/C:/test.jar!/a.txt";
args[1]="c:/test.txt";
CopyFile.FormJar(args[0], args[1]);
}
}
6. mvn 怎麼載入pom文件的jar
這個是maven的東西了,mvn是maven的指令來的。
現在最新的eclipse有內嵌maven管理工具了。你要新建maven的工程,不是普通的java工程。
然後再pom文件中,寫上你要的jar,maven就會幫你到jar的中心倉庫去下載對應的jar包,然後自動載入到工程中。
如果需要下載jar包,網路搜索一下 「manyjar」關鍵字,有一個jar包下載的網站,有大量的jar可以下載,推薦使用,有助你學習.
7. 如何利用maven的pom文件導入jar包是從哪導入的
maven工程中添加jar有兩種方式添。
第一:
通過【Dependencies】,可視化界面操作點擊Dependencies標簽頁。點擊【add】按鈕 輸入我們想添加的jar包名字進行搜索.就會出現下圖中所示。他會把對應名稱的所有版本jar包列出來. 選擇對應jar包,點擊【OK】按鈕確認添加。
第二:通過pom.xml源碼方式添加,標簽<dependency></dependency>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
</dependencies>
8. 如何配置maven pom文件來解決jar包沖突
maven3在解決依賴沖突採用就近原則,在就近原則不能做出判斷的情況下依據pom.xml的聲明的先後順序決定導入的jar。
jar包沖突多為傳遞性依賴的管理不當給項目帶來的麻煩解決思路羅列如下:
1、首先查看當前項目的jar關系如果使用eclipse、idea等編輯器可打開pom.xml文檔底部有Dependency Hierarchy可供查看jar的依賴情況。第二種使用maven插件的方式使用命令行:
mvndependency:tree
結果中重要的是兩個部分,首先是Used undeclared dependencies意值項目中使用到的,但是沒有顯示聲明的依賴。這種依賴意味著潛在的風險。他是通過其他直接依賴導入的傳遞性依賴,當直接依賴升級時相關依賴的版本也會變化。可能導致當前項目報錯,且不易察覺。另一個部分是Unused declared dependencies意指項目中未使用的,但顯式聲明的依賴。需要注意的是我們不應該直接刪除了事而是應該仔細分析。因為這個命令行發現不了執行測試和運行時需要的依賴。
以上方法都可可完整的查看當前項目的jar情況,個人更喜歡使用命令行。
2、通過以上方法我們可以看到項目中引用jar版本號;接下來就是如何排除掉我們不想要版本的jar;語法如下:
<dependency>
<groupId>.....</grooupId>
<artifactId>....</artifactId>
<version>...</version>
<exclusions>
<exclusion>
<groupId>.....</groupId>
<artifactId>.....</artifactId>
</exclusion>
</exclesions>
<dependency>
<!--exclusions可包含一個或多個exclusion元素-->
3、一下規避jar沖突的思路,如果項目中有直接用到某個jar而這個jar已通過傳遞依賴的方式引入到maven項目里了。最好排除這個傳遞依賴在pom裡面明確的聲明這個依賴。歸類依賴,不斷的優化依賴如,去除多餘的依賴。