2016-03-24 15 views
0

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!

+0

"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

+0

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

+1

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

cevap

0

Ben yaşadığınız sorun

public static void main (String [] args){ 
    Runtime rt = Runtime.getRuntime(); 
    Process pr = rt.exec("java -jar \\Calculator.jar"); 
    pr.waitFor(); 
} 

deneyin zaman bilgisayarın kök dizine görünüyor olduğuna inanıyoruz, aynı zamanda, ucunda unutulmuş bir tırnak işareti vardı. Geçerli çalışma dizinine erişme şekliniz, sadece \\'u ortadan kaldırarak, her durumda, kavanoz dosya yolunu tırnak işaretleri içine almak isteyebilirsiniz.

public static void main (String [] args){ 
    Runtime rt = Runtime.getRuntime(); 
    Process pr = rt.exec("java -jar \"Calculator.jar\""); 
    pr.waitFor(); 
} 
+0

Bunun tam olarak aradığınız şey olup olmadığından emin değilim, ancak IDE'niz farklı bir konumdan jar'ı çalıştırıyormuş gibi görünüyor – Dankrushen

+0

Yardımlarınız için teşekkürler, ancak düzeltdim. Çalıştığım dizinin başka bir yerdeyken bir yer olduğunu düşündüm. – JustBlossom

İlgili konular