我在eclipse中创建了一个maven web-app项目,它在我制作它的机器上运行良好。但是当在eclipse中将这个项目导入到其他机器时,它会在获取文件时给出这个异常:
异常:d:\的Eclipse%20Workspace.metadata.plugins \ org.eclipse.wst.server.core \ TMP0 \ wtpwebapps \示例\ WEB-INF \类\ file.txt的 (系统找不到指定的路径)
我正在使用此代码获取文件:
public File getFile (String fileName) {
//Get file from resources folder
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource(fileName).getFile());
return file;
}
该文件位于项目的资源文件夹中:
D:\ Eclipse Workspace \ Sentiment Analysis \ example \ src \ main \ resources
我走了显示异常消息的路径,发现文件已经存在。
答案 0 :(得分:1)
网址的getFile
方法不会将网址转换为文件。它只返回主机和端口之后的URL部分。 URL需要以百分比形式转义大量字符,包括空格,因此您无法可靠地将URL的路径部分用作文件名。实际上,异常正好告诉您:您的计算机上没有名为D:\Eclipse%20Workspace.metadata.plugins
的目录。 (来吧检查。)
如果您有网址,则不应尝试将其转换为文件。你不需要。您可以使用URL的openStream method从文件中轻松读取URL。
但即使这样也没有必要,因为您也可以使用getResourceAsStream方法完全跳过URL并获得可读的InputStream:
InputStream stream = getClass().getResourceAsStream("/file.txt");
答案 1 :(得分:0)
代码在此代码类驻留的同一目录中查找该文件。这段代码的包结构是什么? 此外,只有Maven将资源复制到类路径中。因此,如果使用Eclipse进行编译和运行,则不会自动复制resources文件夹。