您是否检查过您的捆绑包是否在您的临时目录中生成。在 windows 中的示例,您通常会在以下位置找到临时目录:
C:\Users\<username>\AppData\Local\Temp\tomcat.<random numbers>.8080\work\Tomcat\localhost\<context path>\jawrTmp
我发现,因为它是您的构建的 jar,而不是带有 webapp 目录的旧 mvc war 文件,您需要使用类路径生成器:
https://j-a-w-r.github.io/docs/generators.html
前缀是你在实现生成器时要指定的键,路径是一个字符串,根据你的生成器的功能会有不同的含义。此外,括号和括号中有参数(两者都是可选的),这进一步有助于参数化映射。一个没有参数的简单映射示例如下:
jawr.js.bundle.one.mappings=jar:net/jawr/cpscript.js
但要小心,因为我个人没有注意到这个金块:
与普通映射不同,这种引用资源的方式还不允许使用通配符(即:jar:/com/mycompany/myapp/** 不起作用)。
由于它不会递归地遍历目录,我不得不手动将它们全部添加到 jawr.properties。
一些附加信息
在此之后,我注意到 .sorting 文件将附加到捆绑包的内容中(出于某种有趣的原因,我无法弄清楚为什么某些映射会与 /jar:<mapping> 重叠;其中MinJS 处理器完全失去理智。
所以我个人找不到解决方法,所以我构建了一个自定义的 PostProcessor 和 PreProcessor。预处理器遍历每个映射并将/jar:<mapping> 值固定为jar:<mapping>,并使用.sorting 文件的内容填充静态列表。
PostProcessor 从捆绑的内容中删除对该静态列表中包含的值的任何引用(很好地解决了该问题)。仍然有一个问题,我可以 http 到带有前缀 context-path/jsb/bundles 的包,但我的应用程序仍然没有收到 /bundles 所以不确定我自己是否有问题。
简而言之,因为你有一个 jar,你必须通过类路径而不是 servlet 加载内容(我相信它默认搜索它。)
希望这会有所帮助,如果您确实设法使其全部正常运行,请在此处分享,因为关于 spring-boot jars 和 jawr 的文档很少。