Mac上的CLASSPATH,以及Mac如何寻找mysql-connector-java-bin.jar

时间:2010-03-24 15:51:48

标签: java jdbc classpath

Mac OS X 10.6上是否有默认的类路径?当我echo $CLASSPATH时,什么都不会出现。在我的.profile中,我只看到PATH变量已设置。我的问题是我的servlet似乎无法找到一个合适的驱动程序来连接到mysql服务器。我使用EclipseGlassfish v3MAMP用于MYSQL服务器。

3 个答案:

答案 0 :(得分:11)

有几种方法可以让Java在Mac OS X上看到JAR:

       
  • 将其放在/ Library / Java / Extensions
  • 中    
  • 创建/编辑CLASSPATH环境变量
  •    
  • 使用-cp选项显式指定类路径。

默认情况下未设置CLASSPATH环境变量,但是,如果您愿意,可以设置它。但请注意,您在~/.profile中设置的任何环境变量只会在终端会话中生效,不会影响任何GUI应用程序。如果要设置环境变量以使它们影响GUI应用程序,可以创建包含环境变量的名为~/.MacOSX/environment.plist的文件。对该文件所做的任何更改将在您下次登录时生效。

正如所观察到的,将JAR放在extensions文件夹中或修改CLASSPATH环境变量通常都是坏主意,因为它们可能会导致依赖地狱。更好的方法是将JAR与工件捆绑在一起,并适当地设置元数据,使它们位于工件的类路径中。如果使用Apache Maven2构建工件,则可以自动下载并捆绑任何第三方依赖项,并为工件设置适当的类路径。

答案 1 :(得分:5)

使用CLASSPATH环境变量。这是便携性问题。整个环境变量是Sun家伙的错误。它只适用于初学者,但肯定不适用于现实世界。这只会在之后更多地混淆初学者。此外,appservers(和IDE)完全忽略了这个环境变量。 将库放在JRE或JDK库中。这也是可移植性问题。如果您升级JRE / JDK或在其他地方运行应用程序,它将不再起作用。

在网络应用程序中,您通常只需在Webapp/WEB-INF/lib中删除特定于webapp的第三方库。该文件夹由webapp的默认类路径覆盖。如果这些库是特定于appserver的(例如,需要JDBC驱动程序来创建由appserver管理的JNDI数据源),那么您需要将它们放在Appserver/lib中。此文件夹由appserver的默认类路径覆盖。对于Glassfish,您需要将其更具体地放在特定于域的/lib文件夹中,例如glassfish/domains/<domainname>/lib

答案 2 :(得分:1)

我在这个方面苦苦挣扎。尝试将appserv-rt.jar(位于Glassfish lib目录中)添加到项目的构建路径中。 (如果你想避免这种情况,首先要使用jar创建一个库,然后将库添加到你的构建路径中,我将拖动所有它的依赖。