在IntelliJ IDEA的路径字符串中使用$PROJECT_DIR$变量不生效如何解决
问题根因
$PROJECT_DIR$、$MODULE_DIR$是IntelliJ IDEA专属的IDE层面路径变量,仅在IDE处理自身配置(如运行参数、构建规则、文件模板等)时才会被解析替换,直接写在Java代码的字符串中时,JVM运行时无法识别该占位符,自然无法找到对应文件。
可行实现方案
你的图片存放在Maven/Gradle标准项目的resources目录下,属于类路径资源,直接通过类加载器读取即可实现跨设备共享,不需要依赖IDE变量,代码示例如下:
// 非静态场景下使用 stage.getIcons().add(new Image(getClass().getResourceAsStream("/com/example/demo/money.png"))); // 静态场景下使用,将YourClassName替换为你当前类的类名 stage.getIcons().add(new Image(YourClassName.class.getResourceAsStream("/com/example/demo/money.png")));
注意事项
- 路径开头的
/代表从类路径根目录(对应项目的resources目录)开始查找资源,省略斜杠则会从当前类所在的包路径开始查找 - Maven、Gradle的标准项目结构默认会把resources目录下的文件打包到类路径中,无需额外配置
- 该写法不依赖任何IDE配置,不管是本地运行还是打包为jar包发布都能正常加载资源,完全满足项目共享需求
内容的提问来源于stack exchange,提问作者Mat21445
相关产品推荐
相关产品推荐

