Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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文件的情况下执行jar的路径_Java_Path_Resources - Fatal编程技术网

Java获取在没有.jar文件的情况下执行jar的路径

Java获取在没有.jar文件的情况下执行jar的路径,java,path,resources,Java,Path,Resources,我正在尝试使用intelij Idea工件将我的应用程序导出到jar中。我导出除资源之外的所有内容(我认为14,5GB对于.jar文件来说太多了),所以我将/res文件夹放在与jar相同的文件夹中 现在,我的结构如下所示: /SAR.jar /res/colors/ /res/icons/ /res/map/ 但是,我无法访问此资源。我使用以下代码获取路径: dir=new文件(getClass().getProtectionDomain().getCodeSource().getLocati

我正在尝试使用intelij Idea工件将我的应用程序导出到jar中。我导出除资源之外的所有内容(我认为14,5GB对于.jar文件来说太多了),所以我将
/res
文件夹放在与jar相同的文件夹中

现在,我的结构如下所示:

/SAR.jar
/res/colors/
/res/icons/
/res/map/
但是,我无法访问此资源。我使用以下代码获取路径: dir=new
文件(getClass().getProtectionDomain().getCodeSource().getLocation().Tori().getPath()+“/res/icons/”

它在IDE中运行时工作,并打印正确的位置。但是当我构建一个工件并通过cmd运行它时,我会得到空指针,它会打印以下路径:
D:/JavaProject/SAR/out/artifacts/SAR\u jar/SAR.jar/res/icons
。但我的资源不在jar文件中,它们只在同一个目录中

有什么想法吗?我在path中只做过android项目,我根本无法让这个带有JAR的资源系统工作


感谢forward

中的介绍,您正在尝试使用依赖于源代码位置的路径访问Resources,但情况显然并非如此,因为您将代码(或jar中的字节码)与Resources分开。必须使用相对于jar的路径或绝对路径访问它们

我认为您只需要以下路径(如果jar是从包含jar的目录运行的):


如果我想在IDE中编译它,请让我知道我的建议是否有效。如果我想在IDE中编译它,请让我知道我的建议是否有效。但是,如果我想在IDE中编译它,我必须将getClass().getResources()放在前面。谢谢,这取决于您标记为IDE工作目录的目录。只要在这两种情况下都可以使用相同的路径,就可以了
new File("res/icons/icon.png")