Netbeans ile oluşturduğum bir Calculator.jar dosyası var.Mutlak Yolu olmadan Java'dan bir jar dosyası çalıştırma
Bu jar dosyasını java kodu kullanarak çalıştırmak istiyorum.
public static void main (String [] args){
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("java -jar C:\\pathToJar\\Calculator.jar);
pr.waitFor();
}
kod iyi çalışır, ancak benim sorunum dosyanın yolu ile gelir: stackoverflow ve bazı belgeler siteleri etrafında baktıktan sonra aşağıdaki çalıştı. Programı mutlak yol olmadan çalıştırırsam, çalışır ve tamamlanır, ancak hesap makinesi GUI'sinin açıldığını asla göremiyorum. Mutlak yolla çalıştığımda, GUI beklendiği gibi açılır.
Kavanoz dosyasını kaynak kodumla aynı yere sahibim. Bunu yapmayı düşündüm, sadece Calculator.jar'ı mutlak yol olmadan koymamı sağladı. Bu olsa işe yaramaz.
Kavanoz dosyasını nasıl saklayabileceğimi bilen var mı, bu yüzden mutlak yolu kullanmam gerekmez mi?
Düzenleme: Ayrıca, jarFiles adlı proje içinde ayrı bir paket oluşturmayı denedim ve jarFiles\Calculator.jar
yolunu denedim. Bu da işe yaramadı. Varsayılan yolla ilgili bir şeyi yanlış anladığımı/komut çağırdığımda cmd'nin varsayılan olarak hangi yolu kullandığını düşünüyorum. Yine de emin değilim.
Her türlü öneri için şimdiden teşekkür ederiz!
"Geçerli çalışma dizini", programı çalıştırmadan önce değiştirdiğiniz dizindir. Bazı IDE'lerde, sınıf dosyalarına göre belirli bir noktaya ayarlanabilir. Ama program yazarken buna güvenemezsin. Ya bilinen bir noktaya göre yolu çözün veya mutlak bir yol kullanın. – RealSkeptic
Ama çalışmayan "projectpackage \ src \ Calculator.jar" gibi bir şey yazarsam. Ve teknik olarak o noktada göreceli bir yol ayarlıyorum. Ya da, "getWorkingDirectory" gibi bir şey yapmam ve sonra dosyaya erişmem gerekiyor mu? – JustBlossom
Programın bir IDE'den çalıştırıldığında geçerli çalışma dizininin ne olduğunu görmek için eğitici bulabilirsiniz. Sadece komut satırından çalıştırıldığında, kullanıcıların beğendikleri herhangi bir çalışma dizinini ayarlayabileceğini unutmayın. Yolu bir parametre, bir ortam değişkeni olarak geçirebilir veya bilinen bir dosyaya göre çözebilirsiniz. – RealSkeptic