web-dev-qa-db-ja.com

Java(IDE)で現在のプロジェクトディレクトリのパスを見つける方法は?

Javaでプログラムで現在実行中/デバッグ中のプロジェクトのパスを見つけようとしています。Googleで調べたところ、System.getProperty("user.id")で、プロジェクトのパスを取得できませんでした。

C#のEnvironment.currentDirectoryコマンドは、現在実行中/デバッグ中のプロジェクトのパスを提供するので、Javaでも同様の方法が必要だと確信しています。

だから私は誰かが私に言ったり、現在実行中/デバッグ中のプロジェクトのパスをプログラムで見つける方法についてのコードを教えてもらえますか?

編集:Eclipseスタートでロードするプラグインを書いています。プラグインはEclipseのワークベンチにボタンを追加し、プラグインのコードでボタンをクリックすると、現在のディレクトリパスを検索します。

私の目的は、たとえばプロジェクトをデバッグしてからボタンをクリックすると、デバッグされたプロジェクトのパスを表示するウィンドウがポップアップすることです、ありがとう

51
user1765376

二つの方法

System.getProperty("user.dir");

またはこれ

File currentDirFile = new File(".");
String helper = currentDirFile.getAbsolutePath();
String currentDir = helper.substring(0, helper.length() - currentDirFile.getCanonicalPath().length());//this line may need a try-catch block

アイデアは、「。」で現在のフォルダを取得し、その絶対位置を取得して、そこからファイル名を削除することです。

/home/shark/Eclipse/workspace/project/src/com/package/name/bin/Class.class

取得するClass.classを削除すると

/home/shark/Eclipse/workspace/project/src/com/package/name/bin/

それはちょっとあなたが望むものです。

87
Shark

Javaを使用してプロジェクトの場所を取得するには、user.dirキーを使用します。

コード:

System.out.println("Present Project Directory : "+ System.getProperty("user.dir"));

OutPut:

Present Project Directory :C:\workspace\MyEclipse 10\examples\MySqlMavenDomain

すべてのシステムプロパティを表示するには、System.getProperties();を使用します

出力を取得するには、System.getProperty("Java.version");Key値を使用します。

コード:

Properties properties = System.getProperties();
Enumeration<Object> enumeration = properties.keys();
for (int i = 0; i < properties.size(); i++) {
    Object obj = enumeration.nextElement();
    System.out.println("Key: "+obj+"\tOutPut= "+System.getProperty(obj.toString()));
}

OutPut:

Key: Java.runtime.name  OutPut= Java(TM) SE Runtime Environment
Key: Sun.boot.library.path  OutPut= C:\Program Files\Java\jdk1.7.0_45\jre\bin
Key: Java.vm.version    OutPut= 24.45-b08
Key: Java.vm.vendor OutPut= Oracle Corporation
Key: Java.vendor.url    OutPut= http://Java.Oracle.com/
Key: path.separator OutPut= ;
Key: Java.vm.name   OutPut= Java HotSpot(TM) Client VM
Key: file.encoding.pkg  OutPut= Sun.io
Key: user.country   OutPut= US
Key: user.script    OutPut= 
Key: Sun.Java.launcher  OutPut= Sun_STANDARD
Key: Sun.os.patch.level OutPut= Service Pack 3
Key: Java.vm.specification.name OutPut= Java Virtual Machine Specification
Key: user.dir   OutPut= C:\workspace\MyEclipse 10\examples\MySqlMavenDomain
Key: Java.runtime.version   OutPut= 1.7.0_45-b18
Key: Java.awt.graphicsenv   OutPut= Sun.awt.Win32GraphicsEnvironment
Key: Java.endorsed.dirs OutPut= C:\Program Files\Java\jdk1.7.0_45\jre\lib\endorsed
Key: os.Arch    OutPut= x86
Key: Java.io.tmpdir OutPut= C:\DOCUME~1\UDAYP~2.PBS\LOCALS~1\Temp\
Key: line.separator OutPut= 

Key: Java.vm.specification.vendor   OutPut= Oracle Corporation
Key: user.variant   OutPut= 
Key: os.name    OutPut= Windows XP
Key: Sun.jnu.encoding   OutPut= Cp1252
Key: Java.library.path  OutPut= C:\Program Files\Java\jdk1.7.0_45\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/MyEclipse/Common/binary/com.Sun.Java.jdk.win32.x86_1.6.0.013/jre/bin/client;C:/Program Files/MyEclipse/Common/binary/com.Sun.Java.jdk.win32.x86_1.6.0.013/jre/bin;C:/Program Files/MyEclipse/Common/binary/com.Sun.Java.jdk.win32.x86_1.6.0.013/jre/lib/i386;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\system32\WindowsPowerShell\v1.0;D:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;D:\Program Files\Microsoft SQL Server\100\Tools\Binn\;D:\Program Files\Microsoft SQL Server\100\DTS\Binn\;.
Key: Java.specification.name    OutPut= Java Platform API Specification
Key: Java.class.version OutPut= 51.0
Key: Sun.management.compiler    OutPut= HotSpot Client Compiler
Key: os.version OutPut= 5.1
Key: user.home  OutPut= C:\Documents and Settings\uday.p.PBSYSTEMS
Key: user.timezone  OutPut= 
Key: Java.awt.printerjob    OutPut= Sun.awt.windows.WPrinterJob
Key: file.encoding  OutPut= UTF-8
Key: Java.specification.version OutPut= 1.7
Key: Java.class.path    OutPut= C:\workspace\MyEclipse 10\examples\MySqlMavenDomain\target\test-classes;C:\workspace\MyEclipse 10\examples\MySqlMavenDomain\target\classes;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\jstl\jstl\1.2\jstl-1.2.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\javax\servlet\javax.servlet-api\3.1.0\javax.servlet-api-3.1.0.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\mysql\mysql-connector-Java\5.1.28\mysql-connector-Java-5.1.28.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\javax\mail\mail\1.4.7\mail-1.4.7.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\javax\activation\activation\1.1\activation-1.1.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\junit\junit\4.11\junit-4.11.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\hibernate\hibernate-core\4.3.0.Final\hibernate-core-4.3.0.Final.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\jboss\logging\jboss-logging\3.1.3.GA\jboss-logging-3.1.3.GA.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\jboss\logging\jboss-logging-annotations\1.2.0.Beta1\jboss-logging-annotations-1.2.0.Beta1.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\jboss\spec\javax\transaction\jboss-transaction-api_1.2_spec\1.0.0.Final\jboss-transaction-api_1.2_spec-1.0.0.Final.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\xml-apis\xml-apis\1.0.b2\xml-apis-1.0.b2.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\hibernate\common\hibernate-commons-annotations\4.0.4.Final\hibernate-commons-annotations-4.0.4.Final.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\hibernate\javax\persistence\hibernate-jpa-2.1-api\1.0.0.Final\hibernate-jpa-2.1-api-1.0.0.Final.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\javassist\javassist\3.18.1-GA\javassist-3.18.1-GA.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\jboss\jandex\1.1.0.Final\jandex-1.1.0.Final.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\hibernate\hibernate-entitymanager\4.3.0.Final\hibernate-entitymanager-4.3.0.Final.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\commons-dbcp\commons-dbcp\1.4\commons-dbcp-1.4.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\commons-fileupload\commons-fileupload\1.3\commons-fileupload-1.3.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\commons-io\commons-io\2.4\commons-io-2.4.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\commons-net\commons-net\3.3\commons-net-3.3.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\commons-codec\commons-codec\1.9\commons-codec-1.9.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\commons-pool\commons-pool\1.6\commons-pool-1.6.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\commons-logging\commons-logging\1.1.3\commons-logging-1.1.3.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\commons-beanutils\commons-beanutils\1.9.0\commons-beanutils-1.9.0.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\Apache\commons\commons-lang3\3.1\commons-lang3-3.1.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\log4j\log4j\1.2.16\log4j-1.2.16.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\springframework\spring-orm\3.2.6.RELEASE\spring-orm-3.2.6.RELEASE.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\springframework\spring-jdbc\3.2.6.RELEASE\spring-jdbc-3.2.6.RELEASE.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\springframework\spring-tx\3.2.6.RELEASE\spring-tx-3.2.6.RELEASE.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\springframework\spring-web\3.2.6.RELEASE\spring-web-3.2.6.RELEASE.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\springframework\spring-aop\3.2.6.RELEASE\spring-aop-3.2.6.RELEASE.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\springframework\spring-webmvc\3.2.6.RELEASE\spring-webmvc-3.2.6.RELEASE.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\springframework\spring-aspects\3.2.6.RELEASE\spring-aspects-3.2.6.RELEASE.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\aspectj\aspectjweaver\1.7.2\aspectjweaver-1.7.2.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\springframework\spring-beans\3.2.6.RELEASE\spring-beans-3.2.6.RELEASE.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\springframework\spring-context\3.2.6.RELEASE\spring-context-3.2.6.RELEASE.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\springframework\spring-context-support\3.2.6.RELEASE\spring-context-support-3.2.6.RELEASE.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\springframework\spring-core\3.2.6.RELEASE\spring-core-3.2.6.RELEASE.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\springframework\spring-expression\3.2.6.RELEASE\spring-expression-3.2.6.RELEASE.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\springframework\spring-instrument\3.2.6.RELEASE\spring-instrument-3.2.6.RELEASE.jar;C:\Documents and Settings\uday.p.PBSYSTEMS\.m2\repository\org\springframework\spring-instrument-Tomcat\3.2.6.RELEASE\spring-instrument-Tomcat-3.2.6.RELEASE.jar
Key: user.name  OutPut= uday.p
Key: Java.vm.specification.version  OutPut= 1.7
Key: Sun.Java.command   OutPut= com.uk.mysqlmaven.domain.test.UserLoginDetails
Key: Java.home  OutPut= C:\Program Files\Java\jdk1.7.0_45\jre
Key: Sun.Arch.data.model    OutPut= 32
Key: user.language  OutPut= en
Key: Java.specification.vendor  OutPut= Oracle Corporation
Key: awt.toolkit    OutPut= Sun.awt.windows.WToolkit
Key: Java.vm.info   OutPut= mixed mode, sharing
Key: Java.version   OutPut= 1.7.0_45
Key: Java.ext.dirs  OutPut= C:\Program Files\Java\jdk1.7.0_45\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
Key: Sun.boot.class.path    OutPut= C:\Program Files\Java\jdk1.7.0_45\jre\lib\resources.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\rt.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\jce.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.7.0_45\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.7.0_45\jre\classes
Key: Java.vendor    OutPut= Oracle Corporation
Key: file.separator OutPut= \
Key: Java.vendor.url.bug    OutPut= http://bugreport.Sun.com/bugreport/
Key: Sun.io.unicode.encoding    OutPut= UnicodeLittle
Key: Sun.cpu.endian OutPut= little
Key: Sun.desktop    OutPut= windows
Key: Sun.cpu.isalist    OutPut= pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86

詳細については、 Class System を参照してください

28
pudaykiran

System.getProperty("user.dir")はどうですか?プログラムが起動された作業ディレクトリを提供します。

Javaのシステムプロパティの概要については、Javaチュートリアルの システムプロパティ を参照してください。

6
mthmulders

あなたはカント。

Java-Projectsには1つのパスがありません! Javaプロジェクトには複数のパスがあり、1つのクラスが1つの「プロジェクト」の異なるクラスパスに複数の場所を持つことができます。

したがって、JRE/libにcalculator.jarがあり、CD上の同じクラスを持つ1つのcalculator.jarがある場合:CDからcalculator.jarを実行すると、Java-vmはJRE/lib!

この問題は、プロジェクト内にデプロイされたリソースをロードしたいプログラマーによく起こります。この場合、

System.getResource("/likebutton.png") 

たとえば.

3
Peter Rader

これが新しい方法です。

Path root = FileSystems.getDefault().getPath("").toAbsolutePath();
Path filePath = Paths.get(root.toString(),"src", "main", "resources", fileName);

またはさらに良い:

Path root = Paths.get(".").normalize().toAbsolutePath();

しかし、私はそれをさらに一歩進めます。

public String getUsersProjectRootDirectory() {
    String envRootDir = System.getProperty("user.dir");
    Path rootDIr = Paths.get(".").normalize().toAbsolutePath();
    if ( rootDir.startsWith(envRootDir) ) {
        return rootDir;
    } else {
        throw new RuntimeException("Root dir not found in user directory.");
    }
}
2
djangofan

これは、Javaで現在実行中のWebアプリケーションプロジェクトのパスを取得するためのコードスニペットです。

public String getPath() throws UnsupportedEncodingException {

    String path = this.getClass().getClassLoader().getResource("").getPath();
    String fullPath = URLDecoder.decode(path, "UTF-8");
    String pathArr[] = fullPath.split("/WEB-INF/classes/");
    System.out.println(fullPath);
    System.out.println(pathArr[0]);
    fullPath = pathArr[0];

    return fullPath;

}

ソース: https://dzone.com/articles/get-current-web-application

2
Nikhil Saxena

System.getProperty("user.dir")を使用して現在のプロジェクトパスを取得できます

そのメソッドでは、異なるパスを取得するためにキー名を記述します。キーがわからない場合は、System.getProperties()のすべてのプロパティの使用を見つけることができます。このメソッドはキーを持つすべてのプロパティを返します。それからキー名を手動で見つけることができます。

System.getProperty("KEY NAME")と書く

必要なパスを取得します。

1
Bhola
    File currDir = new File(".");
    String path = currDir.getAbsolutePath();
    System.out.println(path);

これは最後に.を出力します。削除するには、単に文字列を1文字に切り捨てます:

    File currDir = new File(".");
    String path = currDir.getAbsolutePath();
    path = path.substring(0, path.length()-1);
    System.out.println(path);
0
Yogendra Singh