可移植地查找Java类
我对Java还不熟悉,但到目前为止,我找到了一条很好的路。我的应用程序现在需要连接到MySQL,因此根据大量教程,我会这样做:可移植地查找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
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驱动程序。但这很可能不是问题。