Java 获取Jar文件的路径:不同项目的不同结果

Java 获取Jar文件的路径:不同项目的不同结果,java,path,jar,Java,Path,Jar,我有一个获取当前jar文件路径的代码。但有一件奇怪的事情:我有两个jar文件(两个不同的项目)。在项目A:当我运行这个并打印到控制台时,我看到它打印正确。 但是,在项目B中:它只打印当前jar文件的驱动器,而不打印文件夹 例如:文件夹D:\temp: B:/D:/temp/ A的结果:/(前面有一个点!!!) 这是我的密码: String path = getClass().getProtectionDomain().getCodeSource().getLocation().g

我有一个获取当前jar文件路径的代码。但有一件奇怪的事情:我有两个jar文件(两个不同的项目)。在项目A:当我运行这个并打印到控制台时,我看到它打印正确。 但是,在项目B中:它只打印当前jar文件的驱动器,而不打印文件夹

例如:文件夹D:\temp:

B:
/D:/temp/

A的结果:
/
(前面有一个点!!!)

这是我的密码:

        String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
        String decodedPath = URLDecoder.decode(path, "UTF-8");
        String RealPath = decodedPath.substring(0, decodedPath.lastIndexOf("/") + 1);

        System.out.println("path: " + path);
        System.out.println("decodePath: "+decodedPath);
        System.out.println("Real path not include file name: "+RealPath);

据我所知,当我在java中使用目录时,句号(.)表示当前目录。可能只是java行为怪异?或者你同时运行两个罐子?试着在B之前运行A,或者在B之前运行A,看看它是否会产生不同的结果。(我想将此作为一个评论,但我认为我没有足够的声誉这么做:()

您可以发布用于启动这两个项目的命令行表达式吗?“我有一个代码采用当前jar文件的路径。为什么?对我来说是正确的,但如果您将其作为.class运行,我就无法获得“RealPath”的预期行为。”.顺便说一句,你使用的是什么控制台/终端?@Andrew Thompson:因为我想生成一个与jar文件路径相同的文件。@YoussefG.我使用windows 7的命令提示符,我想这里没有问题!