现有代码库的 Java 升级和 Wildfly 升级已完成。在具有 Wildfly 服务器的 Windows 上,应用程序已正确部署。在具有 Wildfly 服务器的 Unix 上,应用程序部署失败,如下所示:
Error parsing XPath '/sqlMapConfig/sqlMap'.
Cause: java.io.IOException: Could not find resource ..\..\WEB-INF\lib\configs\commonSql.xml
尝试相对地址的不同组合。假设
是ibatis在META-INF\classes
中查找配置。
配置文件具有以下条目:
sqlMap resource="..\\..\WEB-INF\lib\configs\commonSql.xml
预计 Windows 和 Unix 在同一服务器上会有相同的行为。
最佳答案
在 Web 应用程序中使用相对路径(尤其是对 WEB-INF
文件夹的引用)来访问资源是不可移植的。这正是您所面临的。
解决此问题的正确方法取决于应用程序的打包和部署方式。一般来说,您需要将资源放入应用程序的 WEB-INF/classes
文件夹中(或放入 WEB-INF/lib
中的 *.jar 文件中)。当 iBatis 搜索资源文件时,WEB-INF/classes
将一起使用 WEB-INF/lib
中的所有 jar。
例如,如果您将 commonSql.xml
放入 WEB-INF/classes/configs
那么您需要在 iBatis 配置中指定它:
sqlMap resource="configs/commonSql.xml"
或者,您可以创建一个 *.jar 文件,其中包含顶级文件夹 configs
以及其中的 commonSql.xml
文件。然后将此 *.jar 文件放入 WEB-INF/lib
文件夹中。然后与上面相同的配置将能够加载该文件。
关于java - IBatis sqlmap资源路径在windows中工作而不是在unix中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58270998/