当库被提取到可运行的 jar 中时,JDBC 运行良好,但在它们刚刚打包时运行良好
Posted
技术标签:
【中文标题】当库被提取到可运行的 jar 中时,JDBC 运行良好,但在它们刚刚打包时运行良好【英文标题】:JDBC runs fine when libraries extracted into runnable jar, but not when they are just packaged 【发布时间】:2016-07-01 21:24:00 【问题描述】:正如标题所说,当我将程序导出为可运行的 jar 并将引用的库提取到 jar 中时,我能够正常运行它并且 JDBC 能够连接到数据库。但是,当我使用简单打包的引用库导出它时,我收到错误“找不到适合 jdbc:mysql://localhost:3306 的驱动程序”。
此外,当我运行该程序时,它在 Eclipse 中运行良好。只有当我导出它时才会出现问题。由于该程序的实现方式,我无法将库提取到 jar 中。它们必须与它一起打包。
有什么想法吗?
【问题讨论】:
请解释一下“我无法将库提取到 jar 中。它们必须与它一起打包。”。 “在它旁边”是指“在包含我编写的代码的类的可运行 jar 之外”?如果是这样,那就是 Eclipse 导出(到可运行的 jar)对话框中的“复制”选项。 【参考方案1】:不要将第三方库解压到您的 JAR 中。它违背了 JAR 的全部目的,即相互独立地打包库。这是一个非常非常糟糕的主意。
确切是什么意思?“将它与简单打包的引用库一起导出”?请列出所涉及的确切步骤,以便我们回答您的问题。当你“打包”你的应用程序时,你几乎肯定没有做正确的事情。由于我们不知道您做错了什么,我们无法提供帮助。
通常,您将库 JAR 放置在同一目录中或放置应用程序 JAR 的目录的受控子目录中。您可以使用应用程序 JAR 的清单在类路径中指定它们。阅读 JAR 文档了解如何执行所有这些操作。
您可以使用安装程序将您的 JAR 和所有依赖的 JAR 打包在一起,或者只需将它们一起放入您提取到部署目录中的 ZIP(或 JAR)文件中。不是在最外层的 ZIP 中,而是在您的实际应用程序 JAR 中,您将清单与类路径放在一起。
部署的目录结构是这样的:
application_directory/
|
|-- yourApplication.jar
|
|-- lib/
|-- thirdParty.jar
|-- anotherThirdParty.jar
|-- someOther.jar
|-- ...
请阅读 Oracle 文档中的 JAR 文件及其清单结构。 http://www.oracle.com/technetwork/java/javase/documentation/index.html
【讨论】:
以上是关于当库被提取到可运行的 jar 中时,JDBC 运行良好,但在它们刚刚打包时运行良好的主要内容,如果未能解决你的问题,请参考以下文章
如何将 oracle XE 数据库嵌入到可执行 jar 中?