Mac OS X 10.6上是否有默认的类路径?当我echo $CLASSPATH
时,什么都不会出现。在我的.profile
中,我只看到PATH
变量已设置。我的问题是我的servlet似乎无法找到一个合适的驱动程序来连接到mysql服务器。我使用Eclipse
,Glassfish v3
和MAMP
用于MYSQL服务器。
答案 0 :(得分:11)
有几种方法可以让Java在Mac OS X上看到JAR:
默认情况下未设置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创建一个库,然后将库添加到你的构建路径中,我将拖动所有它的依赖。