java - 运行可执行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)
请问有什么建议吗?
解决方案
您可以随时尝试打印路径
System.out.println(getClass().getResource(getClass().getSimpleName() + ".class"));
类的getResource()
- 文档说明了区别:
“在对资源名称进行这些更改后,此方法将调用委托给其类加载器:如果资源名称以“/”开头,则不更改;否则,包名称在转换后添加到资源名称前面。”到“/”。如果此对象由引导加载程序加载,则调用委托给 ClassLoader.getSystemResource。
当路径不应该改变时使用/,尝试打印加载的路径,它会让事情变得清晰。
推荐阅读
- javascript - 如何在 Angular 中实现表单投影?
- postgresql - PostgreSQL 无法识别数据库
- python - 使用 pdoc 记录来自不同模块的函数
- python - 如何使用 pyQt 和 appScheduler 更改视图?
- algorithm - Alpha-beta 修剪与领带导致可避免的损失
- oracle - DBA_TAB_MODIFICATIONS 是如何工作的
- javascript - 基于视口中元素的可见性和持续时间的操作
- django - 无论我做什么,都会不断收到错误“没有这样的表”
- ruby - 如何在类(ruby)的方法中显示名称?
- c++ - 对此有编译器警告吗?