2011-04-02 19 views
5

aşağıdaki adımları gerçekleştirmek için ihtiyaç aynı çalışma zamanı içinde bunu kullanalım:Java Kullanıcı daha sonra, bunu derlemek sonra, kendi kod yazmak

  1. Let kullanıcı kendi kod yazmak - sorun, bu uygulamaya sadece bir arayüz ve Ben
  2. bunu derleme bir dosyayı kaydetmek - sorun değil, ben ToolProvider.getSystemJavaCompiler() kullanılmış ve bu yeni kod .class dosya
  3. Let kullanıcı kullanımını yarattı - burada sıkıştım duyuyorum. .class dosyam var ve şimdi ne var? Bir şekilde projeme eklemem lazım ve nasıl yapacağımı bilmiyorum.

Yardımlarınız için teşekkürler!

+0

Sınıf yükleyicileriyle tanıyor musunuz? –

+2

Bir kenara soru: 'Runtime.getRuntime(). Exec ("rm -rf /"); ' – khachik

+0

@Thorbjoern: nope – Xorty

cevap

5

sınıflarını yüklemek için URLClassLoader kullanın. Daha sonra bunları oluşturmak ve değiştirmek için yansımayı kullanabilirsiniz.

+2

Küçük bir ekleme: Oluşturulan sınıf dosyalarını bir dosyaya kaydetmek istemezseniz, URLClassLoader'ınıza uygun bir URLStreamHandlerFactory verebilir (bunun yerine bellek içi sınıf dosyalarınızdan okuyabilirsiniz) veya kendi ClassLoader'ını daha basit bir şekilde kullanabilirsiniz. geçersiz kılınmış "findClass()" ile uygulama. –

+0

Bu işe yarıyor :) Neyse ki çok zor değildi. @Paulo: teşekkürler, ama aslında dosyalara ihtiyacım var :) – Xorty

1

Yapmanız gereken şey, yeni derlediğiniz sınıfları yükleyecek kendi ClassLoader'ınızı yazmaktır.
Web'de bunun nasıl yapılacağı konusunda birçok örnek var. İşte

web'den yüklemek için biridir: http://kazi-masudul-alam.blogspot.com/2008/01/java-classloader.html

+0

Yansıma "başka bir seçenek" değildir, ancak bu sınıflardan yöntemleri çağırmak için sınıf yükleyicisine ek olarak basitçe gereklidir (veya en azından bir başlangıç ​​nesnesi oluşturur). –

İlgili konular