首页 > 解决方案 > 运行可执行jar

问题描述

我在 Eclipse 中有一个 Maven 项目。在 src/main/resources 下,我有一个名为“directoryToCopy”的目录,其中包含文件。一旦我运行我的项目,我想在我的桌面上的本地目录“localDirec”下复制“directoryToCopy”。

我用这个:

File localDirec = new File("c:/desktop/scripts");
URI urlDir = ClassLoader.getSystemResource("directoryToCopy").toURI();
File srcDir = new File(urlDir.getPath());
FileUtils.copyDirectory(srcDir, localDirec);

这在本地工作正常,但是当我想将它作为可执行 jar 文件运行时,我得到 NullPointerException

Exception in thread "main" java.lang.NullPointerException
        at java.base/java.io.File.<init>(File.java:278)

请问有什么建议吗?

标签: javajarexecutable-jar

解决方案


您可以随时尝试打印路径

System.out.println(getClass().getResource(getClass().getSimpleName() + ".class"));

类的getResource()- 文档说明了区别:

“在对资源名称进行这些更改后,此方法将调用委托给其类加载器:如果资源名称以“/”开头,则不更改;否则,包名称在转换后添加到资源名称前面。”到“/”。如果此对象由引导加载程序加载,则调用委托给 ClassLoader.getSystemResource。

当路径不应该改变时使用/,尝试打印加载的路径,它会让事情变得清晰。


推荐阅读