Java 目录在Intellij中有效,但在CMD和.jar中无效

Java 目录在Intellij中有效,但在CMD和.jar中无效,java,cmd,jar,path,Java,Cmd,Jar,Path,这部分代码有问题。从文件夹中,iam加载所有图像,然后将其作为对象的一部分保存到这些对象的列表中 当我用Intellij运行它时,一切都正常。我打印isDirectory()就是因为这个问题。在intellij中,它返回true 但当我尝试通过jar在cmd中运行它时,出现了问题。方法isDirectory()返回false,listFiles()抛出NullPointerException 我还试图手动将整个路径保存在字符串目录中,但没有任何更改。在intellij中,它运行良好,在CMD和j

这部分代码有问题。从文件夹中,iam加载所有图像,然后将其作为对象的一部分保存到这些对象的列表中

当我用Intellij运行它时,一切都正常。我打印isDirectory()就是因为这个问题。在intellij中,它返回true

但当我尝试通过jar在cmd中运行它时,出现了问题。方法isDirectory()返回false,listFiles()抛出NullPointerException

我还试图手动将整个路径保存在字符串目录中,但没有任何更改。在intellij中,它运行良好,在CMD和jar中存在问题。问题真的在这里。在我开始使用这些函数之前,Jar工作得非常好。谢谢你的建议

 private void loadAllExercises(){
        public String directory = System.getProperty("user.dir") + "\\pictures\\";
        File directory = new File(directory);

        System.out.println(directory.isDirectory());

        for (File file : directory.listFiles()) {
            loadExercise(file);
            }
        }

    private void loadExercise(File file){
        if(file.getName().toLowerCase().endsWith(".jpg")) {
            Exercise exercise = new Exercise(file.getName());
            this.allExercises.add(exercise);
        }
    }

System.getProperty(“user.dir”)
返回应用程序启动时的当前目录,可能不是您想要的。如果你想指向你的主目录,因为那里是你的
图片
目录,请尝试使用
System.getProperty(“user.home”)

谢谢,我现在明白了,问题出在哪里了。问题是jar在目标中。“user.home”对我不好,因为我的图片是项目文件夹的一部分。我试过这个。我继续使用我的代码,但在getProperty之后,我还使用了replace(“target”,“”)。之后,它还可以与jar一起工作。但我还有一个问题。我从jar创建了exe,并再次从不同的位置运行。现在,对我来说最好的方法就是找到如何在计算机中某处找到我的项目文件夹的位置。我相信你会有任何想法,这也会有帮助。如果您的意思是,您的jar/exe中内置了图片作为静态资源,那么您可以使用
getResourceAsStream()
来读取它们。如果您的意思是图片在其他地方,可以使用命令行选项让用户在运行时指定图片路径。另一个选项是使用路径设置环境变量,并让应用程序读取该值。或者将路径放入配置文件中,应用程序启动时可以读取该文件。祝你好运