Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取已执行的.jar文件的路径?_Java_Jar - Fatal编程技术网

Java 如何获取已执行的.jar文件的路径?

Java 如何获取已执行的.jar文件的路径?,java,jar,Java,Jar,在Java中,如何获取已执行的.jar文件的路径 我尝试使用System.getProperty(“user.dir”)但这只给了我当前的工作目录,这是错误的,我需要.jar文件直接位于的目录的路径,而不是“pwd”。取自: 可能是java.class.path属性 如果您知道jar文件的名称,并且它位于类路径中,您可以在那里找到它的路径,例如使用一个小正则表达式。您可以指定为什么需要该路径吗?如果您需要从jar文件访问某些属性,您应该查看ClassLoader.getSystemClassLo

在Java中,如何获取已执行的.jar文件的路径

我尝试使用
System.getProperty(“user.dir”)但这只给了我当前的工作目录,这是错误的,我需要.jar文件直接位于的目录的路径,而不是“pwd”。

取自:


可能是java.class.path属性


如果您知道jar文件的名称,并且它位于类路径中,您可以在那里找到它的路径,例如使用一个小正则表达式。

您可以指定为什么需要该路径吗?
如果您需要从jar文件访问某些属性,您应该查看ClassLoader.getSystemClassLoader()
不要忘记,您的类不是存储在jar文件中所必需的。


// if your config.ini file is in the com package.
URL url = getClass().getClassLoader().getResource("com/config.ini");
System.out.println("URL=" + url);

InputStream is = getClass().getClassLoader().getResourceAsStream("com/config.ini");
try {
    if (is != null) {
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    }
    else {
        System.out.println("resource not found.");
    }
}
catch (IOException e) {
    e.printStackTrace();
}


问候。

从哪里来?JAR文件本身内部?是的,来自JAR文件本身内部的代码。这不起作用,当按照指示使用时,返回JRE的路径。谢谢你!需要访问与.jar文件存储在同一目录中的config.ini文件。请查看ClassLoader#getResource/#findResource。如果配置文件位于jar外部,则不确定它是否可以工作。这仅在资源位于类路径中时才起作用。如果不是,您需要知道它的位置,并创建一个InputStream来访问它的内容。

// if your config.ini file is in the com package.
URL url = getClass().getClassLoader().getResource("com/config.ini");
System.out.println("URL=" + url);

InputStream is = getClass().getClassLoader().getResourceAsStream("com/config.ini");
try {
    if (is != null) {
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    }
    else {
        System.out.println("resource not found.");
    }
}
catch (IOException e) {
    e.printStackTrace();
}