【问题标题】:Jrebel not reloading JSON file in resourcesJrebel 没有在资源中重新加载 JSON 文件
【发布时间】:2019-04-04 13:31:49
【问题描述】:

我正在开发一个 Spring 多模块项目。 其中一个项目在一个名为 drivers 的文件夹中包含一些 JSON 文件,该文件夹位于 在:<Project>/src/main/resources.

当我第一次启动应用程序时,所有 JSON 文件都已正确加载,但如果我对其中一个文件进行更改,JRebel 会继续使用旧文件。

有没有办法配置它来解决这个问题?

谢谢。

这是该项目的rebel.xml

 <?xml version="1.0" encoding="UTF-8"?>

<application generated-by="intellij" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zeroturnaround.com" xsi:schemaLocation="http://www.zeroturnaround.com http://update.zeroturnaround.com/jrebel/rebel-2_1.xsd">

    <classpath>
        <dir name="C:/PathToProject/target/classes">
        </dir>
        <dir name="C:/PathToProject/src/main/resources/drivers">
        </dir>
    </classpath>

    <web>
        <link target="/">
            <dir name="C:/PathToProject/src/main/webapp">
            </dir>
        </link>
    </web>

</application>

【问题讨论】:

    标签: java spring jrebel


    【解决方案1】:

    将类路径部分更改为

    <classpath>
        <dir name="C:/PathToProject/src/main/resources/"/>
        <dir name="C:/PathToProject/target/classes"/>
    </classpath>
    

    如果应用程序正在尝试加载类路径资源,则其全名很重要(例如 drivers/myfile.json),因为这是传递给类加载器的内容。 rebel.xml 必须指定类路径根路径,而不是子文件夹。要进行更精细的控制,您可以对 dir 条目使用包含/排除。 还按顺序检查路径,如果它存在于第一个路径中,即使它较旧也会返回。

    所以在你当前的配置中,JRebel 会首先搜索 C:/PathToProject/target/classes/drivers/myfile.json 并在 IDE 中最后一次运行 maven-resources-plugin copy-resources 目标或项目构建时找到旧版本。

    现在如果只修复了顺序,第二条路径仍然不正确,因为它会在不存在的地方寻找C:/PathToProject/src/main/resources/drivers/drivers/myfile.json

    【讨论】:

    • 感谢您的回答。但是我仍然无法让它加载更改的文件。我还缺少什么?
    • 取决于更改后是否重新读取文件以及是否正在缓存结果。 json文件到底是怎么用的?应用程序是每次都读取它还是仅在启动时读取它并根据它计算一些数据?您也可以通过 IntelliJ Help -> JRebel -> Submit a Support Ticket 发送支持票并包含 jrebel.log。他们可以查看并帮助您。
    • 每次我发出某个发布请求时都会读取该文件。然后我应该能够编辑一些字段,发表另一篇文章,并让应用程序读取与我所做的编辑相同的文件。
    • 您可以检查 jrebel.log(默认为 %USERPROFILE%/.jrebel/jrebel.log),每次访问文件时都应包含 [some classloader] found resource: 'drivers/myfile.json' from 'file://C:/PathToProject/src/main/resources/drivers/myfile.json'. 之类的行。查看它是否确实每次都出现,以及from 部分是否指向src/main/resources 或其他位置。
    猜你喜欢
    • 1970-01-01
    • 2019-08-02
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    相关资源
    最近更新 更多