我是Java的新手,但到目前为止我找到了很好的方法。我的应用程序现在需要连接到MySQL,所以按照大量的教程,我做了类似的事情:
Class.forName ("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection (url, userName, password);
这一切都很好,除了我需要在我的CLASSPATH中拥有MySQL JDBC驱动程序的位置,如果Java要找到它的话。我的Gentoo开发机器在/usr/share/jdbc-mysql/lib/jdbc-mysql.jar中有,但我运行应用程序的Debian Server在/usr/share/java/mysql.jar中有它。因此,各种Linux发行版的位置可能不同。
我可以在Eclipse中设置类路径,但这在部署机器上没有意义,我不会在Eclipse中运行它。我可以编写一个包装器shell脚本,以某种方式找出驱动程序的位置并设置CLASSPATH,但这看起来很痛苦。
我的应用程序找到驱动程序的正确方法是什么,无论分发存储在哪里?
在其他编程语言中,我习惯这是自动的。在Perl中,我写了#34;使用Package :: Name"它只是发现它,无论分销商在哪里存储它。在C中,动态库自动在/ usr / lib /.
中找到感谢任何帮助,谢谢!
答案 0 :(得分:4)
一种可能性是不依靠操作系统分发来提供依赖关系并自行分发。大多数应用程序以这种方式工作。
或者,可以要求用户将jar放置在您的应用程序已知的位置。
答案 1 :(得分:0)
如果您有安装脚本,那么您可以在那里找到jar文件并设置类路径。
然而,我们通常做的是在我们的java程序中放置一个lib文件夹,并将所需的jar放在那里。这样我们也可以控制使用的版本。
答案 2 :(得分:0)
这取决于你打算如何构建它。如果您使用vanilla java jar包装来源,那么您可能需要使用相对而非文字路径来实现此功能。
答案 3 :(得分:0)
您可以将sql驱动程序存储在应用程序的lib文件夹中。
答案 4 :(得分:0)
Class.forName ("com.mysql.jdbc.Driver")
对于多个JDBC版本,您根本不需要这样做。