java - 将缺少的驱动程序添加到生产中的遗留项目
问题描述
我正在将旧项目迁移到新服务器。以前该项目使用 Oracle DB,但现在我希望它使用 Postgress。查询很简单,并且在 Postgres 中的工作方式相同。
但是该项目缺少 Postgres jdbc 驱动程序。我可以在不重新编译的情况下以某种方式将此依赖项横向添加到 jar 中吗?
解决方案
我可以在不重新编译的情况下以某种方式将此依赖项添加到 jar 中吗?
这取决于。
如果您将服务器运行为
java -jar myserver.jar ...
,那么您至少需要修改 JAR 文件中的清单。严格来说,这并不需要重新编译,但您确实需要分解、修改和重新打包 JAR 文件。如果服务器用于
Class.forName
显式加载 OracleDriver
类,那么您将需要更改该代码以加载 PostgresDriver
类。(还有其他使用 JDBC 的方法可以避免这种情况,但这取决于您的旧服务器是如何实现的。)如果您的服务器使用 Oracle 特定的数据库类,或 Oracle 特定的 SQL 功能(或者它需要在 Postgres 世界中做同样的事情),则需要进行更广泛的更改。
但是如果没有实际检查您的代码库的详细信息,我们无法预测需要什么。
我的建议是用 Postgres 驱动程序 JAR 替换 Oracle 驱动程序 JAR,看看当您针对具有适当模式和数据的 Postgres 数据库运行服务器时会发生什么。
但我不会在“生产中”这样做。在测试环境中进行。如果不能搭建合适的测试环境……算了。
如果您没有服务器的源代码,我也会忘记它。如果出现任何问题,您很可能需要源代码来找出问题并修复它。
推荐阅读
- c++ - 如何通过按 F2 或 F3 之类的键使控制台打印一些东西
- python - 从另一个目录导入 python 模块失败
- c++ - 如何使用 C++17 (mutex 或 shared_mutex) 为生产者/消费者实现 wait()
- scikit-learn - RandomForestRegressor:关于输出、参数和执行时间的问题
- python - 我想把 \ 变成一个字符串
- php - PHP 从 cli 脚本运行后台脚本
- linux-kernel - 在同一物理内存位置运行进程
- scala - ScalaFX - 如何使用方法获取场景的标题
- html - CSS子div覆盖父填充
- vba - 在 VBA 循环中刷新第 3 方 API