Czy istnieje sposób na uzyskanie ścieżki głównej klasy uruchomionego programu java.Jak uzyskać ścieżkę do uruchomienia programu java
struktura jest
D:/
|---Project
|------bin
|------src
Chcę uzyskać ścieżkę jako D:\Project\bin\
.
Próbowałem System.getProperty("java.class.path");
ale jest problem, jeśli biegnę jak
java -classpath D:\Project\bin;D:\Project\src\ Main
Output
Getting : D:\Project\bin;D:\Project\src\
Want : D:\Project\bin
Czy istnieje jakiś sposób, aby to zrobić?
===== ===== EDIT
Got rozwiązanietutaj
przez Jon Skeet
package foo;
public class Test
{
public static void main(String[] args)
{
ClassLoader loader = Test.class.getClassLoader();
System.out.println(loader.getResource("foo/Test.class"));
}
}
Ta drukowana:
file:/C:/Users/Jon/Test/foo/Test.class
przez Erickson
URL main = Main.class.getResource("Main.class");
if (!"file".equalsIgnoreCase(main.getProtocol()))
throw new IllegalStateException("Main class is not stored in a file.");
File path = new File(main.getPath());
Należy zauważyć, że większość plików klas jest składana w pliki JAR, więc nie będzie to działać w każdym przypadku (stąd nazwa IllegalStateException
). Można jednak zlokalizować plik JAR zawierający klasę za pomocą tej techniki i można uzyskać zawartość pliku klasy przez zastąpienie połączenia getResourceAsStream()
zamiast getResource()
i będzie działać bez względu na to, czy klasa znajduje się w systemie plików, czy w systemie. JAR.
Cóż zawsze można tokenize wynik (cięcie wokół ";", który oddziela wpisy). Właściwość klasy clas zazwyczaj zawiera kilka pozycji (np. Bibliotek, których używasz i tak dalej). Może powinieneś przemyśleć swoje wymagania. Jeśli interesuje Cię tylko jeden folder, czy jesteś pewien, że parsowanie ścieżki klas jest dobrym pomysłem? – Matthias
@Matthias Należy pamiętać, że separator ścieżek jest różny na różnych platformach. Lepiej jest użyć 'System.getProperty (" path.separator ");' –
http://stackoverflow.com/a/778246/1862502 –