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

  • EmmightySofia

    EmmightySofi

    25 EYLÜL 2011
  • Muse

    Muse

    28 EYLÜL 2006
  • xSammyJoe1

    xSammyJoe1

    19 Temmuz 2011