java - this.getClass().getResource ("".getFile() 在使用 IntelliJ/Jetty 8.1.14 运行项目时返回开头为 "file:"的路径

标签 java eclipse jakarta-ee intellij-idea jetty

我正在尝试将我的开发环境从 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/

相关文章:

java - 在 java swing 中使用 JDirectoryChooser

android - 构建testcpp Eclipse项目后报错

java - 如何在 Cloud9 中运行 Maven 构建

java - 设置查询参数;参数值与预期类型不匹配

java - Autowiring 依赖项为空

java - 如何处理JTable数据改变事件

java - Jersey 客户端获取错误消息正文

java - 我如何从源代码构建这个 Maven 项目?

java - 延迟初始化异常

java - 为什么我的数据类型没有自动提升为 Double