Bir kaynak dosyayı derlemek için javax.tools.JavaCompiler
(jdk6) sınıfını kullanıyorum, ancak kaynak dosya bazı jar dosyasına bağlı. javax.tools.JavaCompiler
sınıf yolu nasıl ayarlanır?javax.tools.JavaCompiler'i kaynak derlediğimde sınıf yolu nasıl ayarlanır?
cevap
javax.tools.JavaCompiler#getTask() yöntemi, derleyici seçeneklerini ayarlamanıza olanak sağlayan options
parametresini alır. - Eğer derleyici kullanmak Sen kavanoz dosyaları (ler) hakkında bilmek standart java dosya yöneticisi yapılandırmanız gerekir
: Aşağıdaki message çağıran programın sınıf yolunu erişmek için bunları ayarlamak için kolay bir yol tarif eder Bunu yapmak için seçenek argümanı. Varsayılan olarak
java derleyici nesne sadece varsayılan hakkında bootclasspath için yerleri biliyor gibi görünüyor, terimlerin kendi sınıf yolunda bir içinde ve endorseddirs dizinleri extdirs.
Sen java derleyici çağıran programın akım sınıf yolunu eklemeniz gerekir örneği en üzerinde sonra kavanoz dosyalarında sınıfları bulacaksınız standart dosya yöneticisi, iletilir hangi. İşte
Ben the compiler wrapper I wrote
List<String> optionList = new ArrayList<String>(); // set compiler's classpath to be same as the runtime's optionList.addAll(Arrays.asList("-classpath",System.getProperty("java.class.path"))); // any other options you want optionList.addAll(Arrays.asList(options)); JavaCompiler.CompilationTask task = compiler.getTask(out,jfm,diagnostics,optionList,null,jfos);
sonra gerekir Tüm arama programı çalıştırırken doğru sınıf yolu setini elde etmektir bu işler nasıl bu.
Son zamanlarda da aynı sorun oluştu, sonunda iki geçici çözüm buldum. Sen veya Compiler.getTask (ARG_0, ARG_1, ARG_2, CLASS_PATH_OPTIONS, burada yayınlanan ilk cevap dediği gibi StandardJavaFileManager.setLocation çağırmak yoluyla (StandardLocation.CLASS_PATH, "YOUR_CLASS_PATH") sınıfı yolunu ayarlayabilirsiniz.
Bunu işe almak için 'StandardJavaFileManager.setLocation (StandardLocation.CLASS_PATH, Arrays.asList (new File (classpath))); –
Satheesh yayınlanmıştır Bu bir cevap olarak, "Eğer derleyici sarıcı (link çalışmaz) paylaşmak mümkün olacak." –
bu yazı için bir değirmen teşekkürler, bu çağlar için mücadele ve bu cevap oldu ... şerefe :) – flexinIT
BTW, 'JavaCompiler'in classpath' seçeneği joker karakterlerini" anlamıyor ". Yani her "jar", doğrudan bu dizgeye eklemelisiniz. – Andremoniy