Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可移植地查找Java类_Java_Mysql_Jdbc_Classpath - Fatal编程技术网

可移植地查找Java类

可移植地查找Java类,java,mysql,jdbc,classpath,Java,Mysql,Jdbc,Classpath,我对Java还不熟悉,但到目前为止,我找到了一条很好的路。我的应用程序现在需要连接到MySQL,因此根据大量教程,我会这样做: Class.forName ("com.mysql.jdbc.Driver").newInstance(); Connection con = DriverManager.getConnection (url, userName, password); 这一切都很好,除非我需要在我的类路径中有MySQL JDBC驱动程序的位置,如果Java要找到它的话。我的Gento

我对Java还不熟悉,但到目前为止,我找到了一条很好的路。我的应用程序现在需要连接到MySQL,因此根据大量教程,我会这样做:

Class.forName ("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection (url, userName, password);
这一切都很好,除非我需要在我的类路径中有MySQL JDBC驱动程序的位置,如果Java要找到它的话。我的Gentoo开发机器在/usr/share/jdbc-mysql/lib/jdbc-mysql.jar中,但运行应用程序的Debian服务器在/usr/share/java/mysql.jar中。因此,在不同的Linux发行版上,位置可能不同

我可以在Eclipse中设置类路径,但这毫无意义,因为在部署机器上,我不会在Eclipse中运行它。我可以编写一个包装器shell脚本,以某种方式找出驱动程序的位置并设置类路径,但这似乎很痛苦

我的应用程序找到驱动程序的正确方法是什么,无论分发版将其存储在何处

在其他编程语言中,我习惯于这种自动操作。在perl中,我编写了“use Package::Name”,它只会找到它,而不管发行版将它存储在哪里。在C中,动态库自动位于/usr/lib/中


感谢您的帮助,谢谢

一种可能性是不依赖操作系统发行版来提供依赖性并自己发行。大多数应用程序都是这样工作的


或者,可以要求用户将jar放在应用程序已知的位置。

如果您有安装脚本,则可以在那里找到jar文件并设置类路径


然而,我们通常做的是在java程序中找到一个lib文件夹,并将所需的JAR放在那里。这样,我们还可以控制使用什么版本。

这将取决于您打算如何构建它。如果您对源代码使用vanilla java jar打包,那么很可能需要使用相对路径而不是文字路径来实现这一点

您可以将sql驱动程序存储在应用程序的lib文件夹中

Class.forName ("com.mysql.jdbc.Driver")

对于一些JDBC发行版,您根本不需要这样做。

Mmh,是的,这是可能的。我不知道许多其他应用程序都是这样做的。但这样,除非我手动更新并重新部署,否则系统不会更新mysql驱动程序。但这很可能不是问题。