SORU
20 EKİM 2008, PAZARTESİ


Uygulama'In yolu

Son zamanlarda Java uygulama dizini nasıl ulaşabileceğimi araştırdım. Sonunda cevabı buldum ama böyle genel bir terim için arama kolay değil çünkü şaşırtıcı derecede uzun ihtiyacım olmadı. Birden çok dil bunu başarmak için nasıl bir listesini yapmak iyi bir fikir olacağını düşünüyorum.

Sen eğer downvote/çekinmeyin (yok) gibi bir fikirkatkıda lütfeneğer hoşuna giderse.

Açıklama:

Arasında ince bir çizgi vardırdizini çalıştırılabilir dosya içerenvegeçerli çalışma dizini(Unıx altında pwd tarafından verilen). Aslında Eski ilgileniyordum ama ikincisi belirleme yöntemleri göndermek için ücretsiz (yani hangi açıklama) hissediyorum.

CEVAP
24 Mart 2009, Salı


Javabu çağırır

System.getProperty("user.dir")

ve

new java.io.File("").getAbsolutePath();

geçerli çalışma dizinini döndürür.

Çağrı için

getClass().getProtectionDomain().getCodeSource().getLocation().getPath();

yürütülebilir yolu döndürebilir.

Örnek:

  1. Uygulama yer almaktadır

    C:\MyApp.exe

  2. Kabuk (cmd.exe) açın ve C:\test\subdirectory geçin

  3. Uygulama komutunu kullanarak başlayacak . c:\myapp.exe

  4. İlk iki aramalara cevap '' üçüncü çağrı döndürür '' . C:\MyApp.exeC:\test\subdirectory

Farkında getClass sonuçları()... farklı uygulamaya başlamadan nasıl bağlı olabilir.

Ayıklarken, sonucu oluşturulan sınıf dosyalarının kök yolu, örneğin olacaktır

\c:\eclipse\workspaces\YourProject\bin\

Yol oluşturulan sınıf dosyaları için dizinleri içerir.

Örnek Launch4J, tam yol olacak sonuç ve programın ismini kullanarak oluşturulan bir yürütülebilir dosya için, örneğin ''. C:\dir...\YourApplication.exe

Hata ayıklama sınıf dosyaları için yürütülebilir adı olmadan uygulama dizini için tam bir örnek veya buna karşılık gelen yol:

String applicationDir = getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); 

if (applicationDir.endsWith(".exe"))
{
    applicationDir = new File(applicationDir).getParent();
}
else
{
    // Add the path to the class files  
    applicationDir  = getClass().getName().replace('.', '/');

    // Step one level up as we are only interested in the 
    // directory containing the class files
    applicationDir = new File(applicationDir).getParent();
}

Alternatif olarak getResource çalıştırılabilir dosyanın yolunu bulmak için kullanabilirsiniz. Varsayılan olarak, bu yöntem ayıklarken doğru oluşturulan sınıf dizinler içinde yolunu döndürür. Fazladan bir adım dizin çözmek için kavanoz ya da bir exe konumundan çalışırken gereklidir:

URL url = getClass().getResource("").toURI().toURL();
String applicationDir = url.getPath();

if(url.getProtocol().equals("jar"))
    applicationDir = new File(((JarURLConnection)url.openConnection()).getJarFileURL().getFile()).getParent();

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bethliebert

    bethliebert

    23 EKİM 2008
  • max2sims2

    max2sims2

    19 Kasım 2008
  • pucksz

    pucksz

    24 Mart 2006