我是Java新手。
我使用Netbeans完成了我的Java程序,它使用JDBC (jdbc:mysql://localhost/inventory";)
与mysql服务器连接并构建了Jar。
当我运行jar时,似乎不会连接mysql,我该怎么办?我应该将localhost更改为我的计算机IP吗?
由于
答案 0 :(得分:0)
您需要用户名和密码吗?如果是这样,您可能需要将其添加到连接字符串,如下所示:
jdbc:mysql://localhost/inventory?user=bandi&password=yourpass
答案 1 :(得分:0)
如果符合要求,它是否在netbeans中运行?如果是,则运行.jar文件时似乎没有打开数据库服务器。尝试先打开mysql服务器,然后运行该应用程序。另一种情况,如果它在netbeans的补充过程中不起作用,则表示您在连接时遇到问题,或者尝试关闭防火墙或防病毒软件。
答案 2 :(得分:0)
第一个可能的问题是您正在使用的网址:
应该是这样的:
jdbc:mysql://[my-sql-server-ip]:3306/inventory
通常对于小型应用程序,您可以将server-ip和server-port放在jar文件附近的.properties文件中。如果您不想拥有此文件,则可以在应用程序启动时使用非常简单的GUI表单来获取用户的server-ip和server-port。 (如果这不是最终用户的应用程序,请不要努力。只需使用JOptionPane.ShowInputDialog(...)获取输入,并根据用户的输入动态创建连接URL。)
如果server-ip不是问题,通常第二个问题是my-sql的连接器jar文件不在应用程序的类路径中。
有两种解决方法:
这不是专家的选择,因为JDBC的哲学是: 不要将您的数据库层代码依赖于特定的数据库,并且当您在项目中注入my-sql连接器的源时,您就是这样耦合的。此外,如果要更新项目的my-sql连接器,则必须重新编译项目。我无法计算这个解决方案的不足之处,你可以自己阅读。
例如在根文件夹中:
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是具有启动程序的主要方法的类。
另一个提示是将MANIFEST.MF文件放在META-INF文件夹中项目的src文件夹的根目录。例如:
src
+ META-INF
+ MANIFEST.MF
+ [your packages start here]
最后,您可以压缩ROOT-FOLDER以创建项目和依赖项的可移植输出。
另一种方法是创建一个bat / sh文件来维护类路径和jar文件的执行,但它与上面的方式非常相似。如果你是我,我不会在输出jar文件中注入连接器的类。
祝你好运。