【问题标题】:I need some help concerning using 2 jar files in Java我需要一些关于在 Java 中使用 2 个 jar 文件的帮助
【发布时间】:2011-02-11 00:11:54
【问题描述】:

我有 2 个 .jar 文件。主 jar 文件是我整个项目的 jar 文件,另一个 .jar 文件是 MySql JDBC 连接器。

基本上现在发生的事情是,当我构建项目时,我有一个包含所有内容的主 .jar 文件,但在 NetBeans 中构建时,MySql JDBC 连接器 .jar 文件位于主 jar 文件中。

现在,当我从 NetBeans 中运行项目时,可以在我拥有的 src/com/game/mysql 文件夹中找到 MySql JDBC 驱动程序。但是当我构建项目时,Java 应用程序无法找到 JDBC主 jar 文件中的驱动程序。

当我用 WinRar 打开主 jar 文件时,我可以看到 JDBC jar 文件仍在其 /com/game/mysql/ 文件夹中。但是为什么Java应用不能访问呢?

我听说 Java 不支持嵌套的 .jar 文件,所以我认为这可能是原因,尽管我不确定这是否属实。有没有办法让应用程序可以在主 jar 文件中找到 JDBC .jar 文件?

我还在 NetBeans 中完成了通过右键单击项目 -> 属性 -> 库 -> 添加文件夹/Jar 添加 .jar 文件的操作。这就是它在 NetBeans 运行但仍然不能在 App 构建中工作的原因。

【问题讨论】:

    标签: java


    【解决方案1】:

    听说 Java 不支持嵌套的 .jar 文件

    更准确地说,JAR 文件中的类被打包为主 JAR 中的子 JAR,默认情况下,主 JAR 中的类实际上是不可见的。

    你基本上有两个选择:

    1. 使用 2 个松散的 JAR:your.jarmysql.jar 发送您的应用程序,并在 your.jarClass-Path 文件的 Class-Path 条目中定义 mysql.jar 的相对路径。

      Class-Path: mysql.jar
      

      当你将两个 JAR 放在同一个文件夹中并通过 java -jar your.jar 执行 your.jar 时,它会起作用。

    2. 让您的 IDE 将所有松散的 mysql.jar 类重新打包到 your.jar 中,或者添加一个特殊的类加载器来预加载任何嵌入式 JAR 的类。由于我不做Netbeans,我不知道它是否支持它,如果支持,怎么做。然而,在 Eclipse 中,这绝对是可能的。另见this answer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-21
      • 1970-01-01
      • 2013-08-31
      • 1970-01-01
      • 2019-10-01
      • 1970-01-01
      相关资源
      最近更新 更多