【问题标题】:Jar connect with JDBC使用 JDBC 连接 Jar
【发布时间】:2015-09-14 04:08:37
【问题描述】:

我是 Java 新手。

我使用 Netbeans 完成了我的 Java 程序,该程序使用 JDBC (jdbc:mysql://localhost/inventory";) 连接到 mysql 服务器并构建了 Jar。

当我运行jar时,似乎无法连接mysql,我该怎么办?我应该将localhost更改为我的计算机IP吗?

谢谢

【问题讨论】:

  • 此处需要更多详细信息。你是什​​么意思它“不会连接” - 你得到什么错误信息?例如是找到数据库但没有连接还是找不到数据库。
  • 如果 jar 在服务器计算机上运行(连接到数据库),它就可以工作。但是当我将jar文件复制到同一网络中的其他计算机时,它不会连接。
  • 我已经解决了这个问题。所以我也应该将连接器 jar 复制到其他计算机。这里有谁知道如何在 1 罐内建造这些罐子?所以我不需要复制连接器 jar

标签: java mysql netbeans jdbc


【解决方案1】:

您需要用户名和密码吗?如果是这样,您可能需要将其添加到连接字符串中,如下所示:

jdbc:mysql://localhost/inventory?user=bandi&password=yourpass

【讨论】:

    【解决方案2】:

    如果遵守,它会在 netbeans 中运行吗?如果是,您似乎在运行 .jar 文件时没有打开数据库服务器。尝试先打开 mysql 服务器,然后运行应用程序。另一种情况,如果在 netbeans 中编译期间它不起作用,则意味着您的连接有问题,或者尝试关闭防火墙或防病毒软件。

    【讨论】:

    • 我的服务器一直在sir,但是其他计算机上的jar没有得到任何数据
    【解决方案3】:

    第一个可能的问题是您使用的 URL:

    应该是这样的:

    jdbc:mysql://[my-sql-server-ip]:3306/inventory 
    

    通常对于小型应用程序,您可以将 server-ip 和 server-port 放在 jar 文件附近的 .properties 文件中。如果您不想拥有此文件,您可以在应用程序启动时使用一个非常简单的 GUI 表单来从用户那里获取服务器 IP 和服务器端口。 (如果这不是最终用户的应用程序,请不要过分努力。只需使用 JOptionPane.ShowInputDialog(...) 获取输入,并根据用户的输入动态创建连接 URL。)

    如果 server-ip 不是问题,通常第二个问题是 my-sql 的连接器 jar 文件不在应用程序的类路径中。

    有两种解决方法:

    1. 丑陋但简单的方法:从mysql的站点下载mysql连接器的源文件并将整个源代码放入您的应用程序中,然后您可以构建一个包含连接器的Big Fatty jar文件my-sql 的类。

    这不是专家的选择,因为 JDBC 的理念是: 不要将您的数据库层代码依赖于特定的数据库,当您在项目中注入 mysql 连接器的源代码时,您会与它如此耦合。此外,如果您想为您的项目更新 my-sql 连接器,您必须重新编译您的项目。这个解决方案的不足我数不过来,你可以自己阅读。

    1. 更好的方法是:在你的项目中放置一个清单(然后它将在你的输出 jar 文件中)来声明类路径依赖项。然后在您的输出 jar 文件附近创建一个文件夹,其中包含连接器和可能的其他项目依赖项。

    例如在根文件夹中:

    root-folder
    + [your output jar name].jar
    + [lib folder name]
       +  mysql-connector-java-[your version].jar
    

    以及 MANIFEST.MF 文件的条目:

    Manifest-Version: 1.0
    Class-Path: [lib folder name]/mysql-connector-java-[your version].jar
    Main-Class: [fully qualified package and class name without .java to your main class]
    

    例如:

    Main-Class: com.staefi.main.App
    

    哪个App.java 是启动程序的main方法的类。

    另一个提示是将 MANIFEST.MF 文件放在 META-INF 文件夹内项目中 src 文件夹的根目录中。例如:

    src
    + META-INF
      + MANIFEST.MF
    + [your packages start here]
    

    最后,您可以压缩根文件夹以创建项目和依赖项的可移植输出。

    另外一种方法是创建一个bat/sh文件来维护你的jar文件的类路径和执行,但是它和上面的方法非常相似。如果是你,我不会在我的输出 jar 文件中注入连接器的类。

    祝你好运。

    【讨论】:

      猜你喜欢
      • 2017-06-18
      • 2015-09-24
      • 2022-11-06
      • 2018-01-09
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      相关资源
      最近更新 更多