2016-04-06 17 views

cevap

4

Sen olarak bir sonraki devam edebilirsiniz:

File myFolder = new File("myfolder"); 
URLClassLoader classLoader = new URLClassLoader(new URL[]{myFolder.toURI().toURL()}, Thread.currentThread().getContextClassLoader()); 
Class<?> myClass = Class.forName("my.package.Myclass", true, classLoader); 
Myclass obj = (Myclass)myClass.newInstance(); 

Önce o zaman bu yeni ClassLoader kullanarak sınıfı yüklemek, ebeveyn olarak bağlam Classloader kullanılarak URLClassLoader bir örneğini oluşturmak ve nihayet bunu çağırır burada (bir örneğini oluşturmak argüman içermeyen bir kurucu).

+0

'u kullanmanız gerekiyor, teşekkürler, iyi çalışıyor, ancak Class.forName() adında "MyClass" paket adıyla geçebilir miyim? Çünkü paketi biliyorum ama birisi benim programım için bir "eklenti" oluşturmak istiyorsa, onun sınıfının benimkiyle aynı paket adına sahip olması gerekir. Sınıf ismini kolayca alabilirim (.class'ın adı) ama paketinin adını alabilir miyim? – psyked

+1

Eh, _MyClass.class_ dosyanızın _myfolder_ dizininde nerede bulunduğuna bağlıdır, çünkü dizine ve sınıf dosyasında tanımlanan pakete saygı duymanız gerekir. Paket adı foo.bar ise, dosyanız _myfolder/foo/bar/MyClass.class_ adresinde olmalı ve "foo.bar.MyClass" kullanmanız gerekir. Sınıfta tanımlanmış bir paket yoksa, sınıf doğrudan _myfolder_ altına yerleştirilmeli ve gerçekten de "MyClass" kullanabilirsiniz. –

İlgili konular