Jika toples ada di classpath Anda, dan Anda tahu class Main-nya, Anda bisa memanggil class utama. Menggunakan DITA-OT sebagai contoh:
import org.dita.dost.invoker.CommandLineInvoker;
....
CommandLineInvoker.main('-f', 'html5', '-i', 'samples/sequence.ditamap', '-o', 'test')
Perhatikan bahwa ini akan membuat jar bawahan berbagi ruang memori dan jalur kelas dengan jar Anda, dengan semua potensi gangguan yang dapat ditimbulkan. Jika Anda tidak ingin barang itu tercemar, Anda punya pilihan lain, seperti yang disebutkan di atas - yaitu:
- buat ClassLoader baru dengan toples di dalamnya. Ini lebih aman; Anda setidaknya dapat memisahkan pengetahuan toples baru ke classloader inti jika Anda merancang berbagai hal dengan pengetahuan bahwa Anda akan menggunakan stoples alien. Itulah yang kami lakukan di toko saya untuk sistem plugin kami; aplikasi utama adalah shell kecil dengan pabrik ClassLoader, salinan API, dan pengetahuan bahwa aplikasi sebenarnya adalah plugin pertama yang harus dibuat ClassLoadernya. Plugin adalah sepasang stoples - antarmuka dan implementasi - yang digabungkan menjadi satu. Semua ClassLoader berbagi semua antarmuka, sementara setiap ClassLoader hanya memiliki pengetahuan tentang implementasinya sendiri. Tumpukannya sedikit rumit, tetapi lulus semua pengujian dan bekerja dengan baik.
- use
Runtime.getRuntime.exec(...)
(yang sepenuhnya mengisolasi tabung, tetapi memiliki "temukan aplikasi" yang normal, "lepas string Anda dengan benar", "WTF khusus platform", dan "Thread Sistem OMG" dari menjalankan perintah sistem.