パブリック 静的 ボイド(文字列[]引数)主は スローIllegalAccessExceptionが、はIllegalArgumentException、にInvocationTargetException、ないNoSuchMethodException、 SecurityExceptionが、ClassNotFoundExceptionが、ないInstantiationException、でMalformedURLException { // 文字列のパス= // 「/xx/.m2/repository/org/apache/commons/commonsを「-lang3 / 3.1 /コモンズ、lang3-3.1.jar。 文字列のパス=「コモンズ-lang3-3.1.jar」。// ジャー文件需放在工程目录下 loadJar(パス)。 クラス <?> AClassは= Class.forNameの( "org.apache.commons.lang3.StringUtils" ); インスタンスオブジェクト =aClass.newInstance(); オブジェクトストリップ = aClass.getDeclaredMethod( "ストリップ"は、文字列クラス。、ストリングクラス).invoke(例えば、 「[1,2,3,4,5,6,2,3,5、 。1] "" [] " ); System.out.printlnは(ストリップ); } プライベート 静的 無効 loadJar(文字列のjarpath)はスローでMalformedURLException { ファイルjarファイル = 新しい新しいファイル(jarpathを); // のURLClassLoaderからクラスファイルクラスを取得します方法クリップ、jarファイルは、フォルダと考えることができ IF(jarFile.exists()== falseを){ System.out.printlnは( "が見つかりませんJARファイル。"); 戻り値; } // addURLは、動的呼び出し準備クラスローダの方法を取得 する方法、メソッド= ヌル; 試み{ メソッドがするURLClassLoaderを=。クラス .getDeclaredMethod( "addURL"、URL。クラス); } キャッチ(ないNoSuchMethodException | SecurityExceptionがE1) { e1.printStackTrace(); } // アクセスメソッドを取得し、元の値の保存 ブールアクセス= method.isAccessibleを(); 試み{ //は書き込み可能にアクセスを変更し たIF(==アクセス可能偽の){ method.setAccessible(真の); } // システムクラスローダ取得 URLClassLoaderのクラスローダ= (URLClassLoaderの)ClassLoader.getSystemClassLoaderを(); // パスのjarファイルのURLを取得する のjava.net.URL URL = jarFile.toURI() .toURL(); // JAR URLパスは、パスにシステムに加え 、Method.invoke(クラスローダ、URL) } キャッチ(例外E){ ; e.printStackTrace() } 最後に{ // ライトバックアクセス method.setAccessible(アクセス可能); } }
参考記事: