本文目錄一覽:
- 1、怎麼在java項目中調自定義的jar包中的類?
- 2、java導入jar包之後怎麼調用
- 3、java怎麼調用一個jar包里的另一個jar包的class,新手求指教,謝謝
- 4、求E語言通過java支持庫調用jar包時參數傳遞教程
- 5、jar包的使用
怎麼在java項目中調自定義的jar包中的類?
在java項目中調用自定義的jar包需要兩個步驟。第一步,將需要使用的jar包導入到項目中,如果在導入的jar包前看到一個奶瓶裝狀的圖標,那麼代表可以正常使用該jar包了,第二步,在類中使用到自定義的jar包中的內容時,需要導入相關的包信息。一般在開發時,我們自定義的jar包大多數為工具包,即直接使用對象.方法的形式來使用jar包中的內容。
java導入jar包之後怎麼調用
首先你得知道你的jar包里有哪些類,這些類在哪個包下。查看方式:jar包可以用rar壓縮包的方式打開看的。比如你有AAA.jar,該jar裡面有com文件夾,com文件夾裡面有一個test文件夾,test文件夾裡面有Test.java這個類,那麼你在使用時可以import com.test.Test也可以把Test用*代替。
java怎麼調用一個jar包里的另一個jar包的class,新手求指教,謝謝
用反射啊例
A r = new A();
Class temp = r.getClass();
System.out.println(“反射類中所有公有的屬性”);
Field[] fb =temp.getFields();
……
求E語言通過java支持庫調用jar包時參數傳遞教程
Java載入jar文件並調用jar文件當中有參數和返回值的方法
在工作當中經常遇到反編譯後的jar文件,並要傳入參數了解其中的某些方法的輸出,想到Java裡面的反射可以實現載入jar文件並調用其中的方法來達到自己的目的。就寫了個Demo代碼。
以下的類可以編譯生成hello.jar文件。
1 package org.lele.fatpanda;
2 3 public class Util
4 {
5 public static String myName;
6 /* 7 * 無參數,無返回值的方法。
8 */ 9 public static void getVersion()
10 {
11 System.out.println(“java version: ” + System.getProperty(“java.version”) );
12 }
13 /* 14 *有參數,無返回值的方法。
15 */ 16 public static void setTmpName(String name)
17 {
18 myName = name;
19 System.out.println(“Set Tmp Name Succeed and the name is : ” + myName);
20 }
21 /* 22 * 單個參數,有返回值的方法。
23 */ 24 public static String getName(String prefix)
25 {
26 return prefix + “lele”;
27 }
28 /* 29 * 多個參數,有返回值的方法。
30 */ 31 public static String test(String i1, int i2)
32 {
33 return i1 + i2;
34 }
35 36 }
37 /* 38 * 一個生成jar文件的類文件,要使用public的訪問許可權,如果在方便進行反射調用,則要將方法聲明為static。
39 */
下面的就是實現動態載入並調用的主要代碼。
1 package com.xiyoulele.wh;
2 3 import java.io.File;
4 import java.lang.reflect.Method;
5 import java.net.URL;
6 import java.net.URLClassLoader;
7 8 public class Main
9 {
10 public static void main(String[] args)
11 {
12 URL[] urls = new URL[] {};
13 MyClassLoader classLoader = new MyClassLoader(urls, null); //自定義ClassLoader來載入jar文件 14 15 try 16 {
17 classLoader.addJar(new File(“c:\\hello.jar”).toURI().toURL()); //載入特定路徑的jar文件 18 Class? clazz = classLoader.loadClass(“org.lele.fatpanda.Util”); //動態載入jar文件當中的特定類的class文件
19 20 //傳入一個參數一個返回值 21 22 Class?[] typeA = new Class[1]; //傳入要調用的方法的參數類型 23 typeA[0] = String.class;
24 25 Object[] objsA = new Object[1]; //傳入要調用的方法的具體參數 26 objsA[0] = new String(“xiyou”);
27 28 Method method = clazz.getMethod(“getName”, typeA); //獲取要被調用的特定方法 getName(String xx) 29 30 String result = method.invoke(clazz, objsA).toString(); //調用方法,獲取方法的返回值。 31 32 System.out.println(result); //輸出方法
33 34 //傳入2個參數一個人返回值 35 36 Class?[] typesB = new Class[2];
37 typesB[0] = String.class;
38 typesB[1] = Integer.TYPE;
39 40 Object[] ObjsB = new Object[2];
41 ObjsB[0] = new String(“ZT”);
42 ObjsB[1] = new Integer(520);
43 44 Method newMethod = clazz.getMethod(“test”, typesB);
45 String res = newMethod.invoke(clazz.newInstance(), ObjsB).toString();
46 47 System.out.println(res);
48 49 //有傳入的參數,沒有返回值 50 Class?[] typesC = new Class[1];
51 typesC[0] = String.class;
52 53 Object[] objsC = new Object[1];
54 objsC[0] = new String(“xiyoulele”);
55 56 Method methodC = clazz.getMethod(“setTmpName”, typesC);
57 methodC.invoke(clazz.newInstance(), objsC);
58 59 //無參數,無返回值 60 Method methodD = clazz.getDeclaredMethod(“getVersion”);
61 methodD.invoke(clazz.newInstance());
62 63 classLoader.close(); //關閉類的載入器 64 65 } catch (Exception e)
66 {
67 e.printStackTrace();
68 }
69 }
70 //繼承URLClassLoader來實現對jar文件的載入 71 static class MyClassLoader extends URLClassLoader
72 {
73 public MyClassLoader(URL[] urls)
74 {
75 super(urls);
76 }
77 public MyClassLoader(URL[] urls, ClassLoader parent)
78 {
79 super(urls, parent);
80 }
81 public void addJar(URL url)
82 {
83 this.addURL(url);
84 }
85 }
86 }
87 /* 88 * 需求:載入jar文件,動態調用裡面的方法,該方法帶有參數和返回值。
89 */
程序運行的結果:
jar包的使用
導入到工程即可使用了
1. 在程序目錄下,創建一個文件夾,名稱隨便叫,我們這裡叫Lib。
2.將第三方jar包複製到該目錄下
3.右鍵工程
4.Build path
5.java build path,選擇libraries
6.在右邊的按鈕中點擊「Add JARs」
7.選擇Lib目錄下的jar包,導入就可以了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/311169.html