我正在尝试将我的开发环境从 Eclipse 切换到 IntelliJ。我正在开发一个 Java EE 应用程序,它使用从 this.getClass().getResource("").getFile() 返回的路径来创建一个新的 FileInputStream。当使用 Eclipse/Jetty(来自 Eclipse 市场上的 Jetty 插件)运行项目并使用 Glassfish 进行生产时,返回的字符串类似于“/C:/path/to/class/in/jar/”。
但是,当使用 IntelliJ/Jetty(来自 http://download.eclipse.org/jetty/stable-8/dist/ 的 8.*)运行项目时,返回的文件路径看起来像“file:/C:/path/to/class/in/jar/”。字符串开头的“file:”导致“new FileInputStream(path)”发生 FileNotFoundException。
我正在 Windows 8 上开发。
我可以轻松地从字符串中删除“文件:”,但我宁愿不更改代码库来修复看似环境的问题。有什么办法可以让 getFile() 不返回以“file:”开头的路径吗?
最佳答案
想通了。该应用程序正在将其中一个子项目部署到 jar 文件而不是文件夹。这导致 URL#getFile()
出于某种原因附加“文件:”协议(protocol)。为了解决这个问题,我转到模块设置 > 工件 > 'exploded' 模块并将子项目的编译输出从 jar 文件移动到一个文件夹。
关于java - this.getClass().getResource ("".getFile() 在使用 IntelliJ/Jetty 8.1.14 运行项目时返回开头为 "file:"的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23367158/