我是新来爪哇的。
我使用Netbeans完成了我的Java程序,Netbeans使用JDBC (jdbc:mysql://localhost/inventory";)连接到mysql服务器,并构建了Jar。
当我运行jar时,它似乎不能连接mysql,我该怎么办?我是否应该将localhost更改为我的计算机IP?
谢谢
发布于 2015-06-27 15:18:04
您是否需要用户名和密码?如果是这样,您可能需要将其添加到连接字符串中,如下所示:
jdbc:mysql://localhost/inventory?user=bandi&password=yourpass发布于 2015-06-27 15:58:03
如果编译,它可以在netbeans中运行吗?如果是,则在运行.jar文件时似乎没有打开数据库服务器。尝试先打开mysql服务器,然后运行应用程序。另一种情况是,如果它在netbeans编译过程中不起作用,这意味着您的连接有问题,或者尝试关闭防火墙或杀毒软件。
发布于 2015-06-27 21:30:20
第一个可能的问题是您使用的URL:
应该是这样的:
jdbc:mysql://[my-sql-server-ip]:3306/inventory 通常,对于小型应用程序,可以将服务器ip和服务器端口放在jar文件附近的.properties文件中。如果您不想要这个文件,您可以在应用程序启动时使用一个非常简单的GUI表单,以便从用户那里获取服务器ip和服务器端口。(如果这不是针对最终用户的应用程序,请不要设置为hard。只需使用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是启动程序的main方法的类。
另一个技巧是将MANIFEST.MF文件放在项目中META-INF文件夹内的src文件夹的根目录中。例如:
src
+ META-INF
+ MANIFEST.MF
+ [your packages start here]最后,您可以压缩根文件夹以创建项目和依赖项的可移植输出。
另一种方法是创建一个bat/sh文件来维护类路径和jar文件的执行,但它与上面的方法非常相似。如果是您,我就不会在输出jar文件中注入连接器的类。
祝好运。
https://stackoverflow.com/questions/31086139
复制相似问题