自从我遇到这个问题以来已经过了8到10个小时,这真的让我感到烦恼。所以希望有人能给我一个提示我做错了什么。
问题 我正在使用maven阴影插件将我的maven应用程序打包到jar文件中,我遇到的问题是在Eclipse中,当我运行我的应用程序时都是声音,但是当我尝试将我的应用程序作为jar文件运行时:
java -jar <my-file>
我明白了:
Exception in thread 'main' java.lang.NullPointerException
at start.my.App.main<App.java:60>
我的应用程序用作启动我的应用程序的目录中的文件的过滤器和处理器。 Traverse方法只返回我的jar文件所在目录中的文件列表:
@Override
public List<File> traverse(String directory) {
File directory = new File(directory);
List<File> resultList = new ArrayList<File>();
File[] fList = directory.listFiles();
resultList.addAll(Arrays.asList(fList));
for (File file : fList) {
if (file.isDirectory()) {
resultList.addAll(traverse(file.getAbsolutePath()));
}
}
return resultList;
}
出现此问题的行:
WalkerResult walkerResult =
walker.traverse(ClassLoader.getSystemClassLoader()
.getResource(".")
.getPath());
内部遍历方法应该返回我正在运行的jar文件的路径,我认为我做错了,因为当我将路径传递给遍历方法时看起来像:
WalkerResult walkerResult =
walker.traverse("C:\\Users\\Downloads");
在IDE和jar应用程序中一切都很好。
提前感谢任何提示。