2017-11-03 18 views
0

私は実行時にクラスをロードするためにリフレクションを使用していますが、ソナーのルールは を脆弱性の攻撃として指しています。私はByteBuddyを使用すると思いますが、これでbytebuddyライブラリが役に立ちますか?このメソッドがオーバーロードされていることをJavaでの動的クラスロードの代替手段は何ですか?

Class<?> cls = Class.forName(className); 

注:

ClassLoader classLoader = MyClass.class.getClassLoader(); 
Class<?> classsName = classLoader.loadClass(className); 
+2

上記の例では、動的クラスローディングだけが反映されていません。そして、2行目は意味をなさない( 'className = loadClass(className)')。 - おそらく、Sonarは安全でないソースから 'className'を取得していると不平を言っています。 Bytebuddyは助けません - あなたはまだクラスを動的にロードする必要があります。ロードされたクラスからの –

+0

ちょうど私は1つのメソッドをパブリックにアクセス可能にしたいと思いますし、呼びたいと思います。 – Tirumalesh

+0

methodCall.setAccessible(true); methodCall.invoke(getmethod、 "text"); – Tirumalesh

答えて

0

私はそれがソナーの警告を防ぐことができますが、それは要求される可能性があるすべてのクラスinitialisationsを進めてまいりますので、私はむしろClass.forName(String)を使用したい場合はわかりませんクラスローダーを指定するか、クラスを初期化する必要があるかどうかを指定できます。