Java-listFiles()返回nullpointerexception
我正在运行一个从eclipse导出的可运行JAR文件,并得到一个NullPointerException(在Linux VPS上)。在我的Windows PC中,它可以完美地工作在文件中。这是我的代码:Java-listFiles()返回nullpointerexception,java,eclipse,nullpointerexception,Java,Eclipse,Nullpointerexception,我正在运行一个从eclipse导出的可运行JAR文件,并得到一个NullPointerException(在Linux VPS上)。在我的Windows PC中,它可以完美地工作在文件中。这是我的代码: public Main() throws Throwable { Policy.setPolicy(new PluginPolicy()); System.setSecurityManager(new SecurityManager()); File directory
public Main() throws Throwable {
Policy.setPolicy(new PluginPolicy());
System.setSecurityManager(new SecurityManager());
File directory = new File("src/Plugins/Rogue/");
File[] fList = directory.listFiles();
if(fList.length > 0) {
for (File file : fList) {
if (file.isFile()) {
System.out.println(file.getName());
String path = file.getParent().substring(4).replace("\\", ".");
String pluginName = file.getName().split("\\.")[0];
File unauthorizedJarFile = new File(pluginName + ".jar");
ClassLoader unauthorizedLoader = URLClassLoader.newInstance(new URL[] { unauthorizedJarFile.toURI().toURL() });
Plugin unauthorizedPlugin = (Plugin) unauthorizedLoader.loadClass(path + "." + pluginName).newInstance();
unauthorizedPlugin.run();
}
}
}
}
我在Linux VPS中得到了以下信息:
Exception in thread "main" java.lang.NullPointerException
at Test.Main.<init>(Main.java:23)
at Test.Main.main(Main.java:12)
感谢您的帮助!谢谢此文件夹在哪里?这看起来很像您试图将类路径上的资源作为文件读取……首先,在这两种情况下,程序的CWD是什么。
src
文件夹在那里吗?此外,文件路径在Unix系统上不使用“\”—此代码永远不会跨平台。1—如果抽象路径名不存在,则调用的listFiles
将返回null
;2-一旦程序实际生成,src
不太可能存在;3-出于上述原因,您不应在代码中引用src
目录;3-如果你已经jar了你的应用程序,插件目录将嵌入jar中,这意味着它无法通过java.io.File
API…@MadProgrammer访问,这是我的第一个想法-但是OP似乎在复制src文件夹。无论如何;这个问题现在有点太宽泛了。@MadProgrammer#3,没有使用java.io.File
API还有其他方法吗?apachecommons?
Rogue.java
swaggy!