Mac上的类路径,以及Mac如何查找mysql-connector-java-bin.jar
Mac OS X 10.6上有默认类路径吗?当我Mac上的类路径,以及Mac如何查找mysql-connector-java-bin.jar,java,jdbc,classpath,Java,Jdbc,Classpath,Mac OS X 10.6上有默认类路径吗?当我echo$CLASSPATH时,不会显示任何内容。在我的.profile中,我只看到设置了PATH变量。我的问题是,我的servlet似乎找不到合适的驱动程序来连接mysql服务器。我在MYSQL服务器上使用了Eclipse,以及Glassfish v3和MAMP 有几种方法可以让Java在Mac OS X上看到JAR: 将其放在/Library/Java/Extensions中 创建/编辑CLASSPATH环境变量 使用-cp选项显式指定类路径
echo$CLASSPATH
时,不会显示任何内容。在我的.profile
中,我只看到设置了PATH
变量。我的问题是,我的servlet似乎找不到合适的驱动程序来连接mysql服务器。我在MYSQL服务器上使用了Eclipse
,以及Glassfish v3
和MAMP
有几种方法可以让Java在Mac OS X上看到JAR:
- 将其放在/Library/Java/Extensions中
- 创建/编辑CLASSPATH环境变量
- 使用-cp选项显式指定类路径。
~/.profile
中设置的任何环境变量只会在终端会话中生效,不会影响任何GUI应用程序。如果要设置环境变量以使其影响GUI应用程序,可以创建一个名为~/.MacOSX/environment.plist
的文件,其中包含环境变量。对该文件所做的任何更改将在您下次登录时生效
正如已经观察到的,将JAR放在extensions文件夹中或修改CLASSPATH环境变量通常是不好的主意,因为它们可能导致依赖地狱。更好的方法是将jar与工件捆绑在一起,并适当地设置元数据,以便它们位于工件的类路径上。如果您使用来构建您的工件,您可以让它自动下载并捆绑任何第三方依赖项,并为您的工件设置适当的类路径 Donot使用
CLASSPATH
环境变量。这是便携性问题。整个环境变量都是Sun公司的错误。它只对初学者有用,但在现实世界中肯定不行。这只会让发起者在事后更加困惑。此外,appservers(和IDE)完全忽略了这个环境变量。不要将库放入JRE或JDK库中。这也是便携性问题。如果您升级JRE/JDK或在其他地方运行该应用程序,它将不再工作
在webapplications中,您通常只需将特定于webapp的第三方库放到
webapp/WEB-INF/lib
中。此文件夹由webapp的默认类路径覆盖。如果这些库相当特定于appserver(例如,创建由appserver管理的JNDI数据源需要JDBC驱动程序),则需要将它们放入appserver/lib
。此文件夹由appserver的默认类路径覆盖。对于Glassfish,您需要更具体地将其放在特定于域的/lib
文件夹中,例如Glassfish/domains//lib
我为此做了很多努力。尝试将appserv-rt.jar(位于Glassfish lib目录)添加到项目的构建路径中。(如果您想避免这种情况,我不会拖拽它的所有依赖项,首先用jar创建一个库,然后将库添加到构建路径。前两个建议是不好的建议,第三个建议在使用Servlet容器时不是一个真正的选项,您应该将.jar文件包含在您要删除的.war的lib目录中部署到您的Servlet容器。您不需要拥有类路径,因为它会使您的计算机变得非常脆弱,并且充满.jar冲突。好的,当我在Netbean上开发时,我可以看到我的War文件,但在eclipse上看不到。eclipse是否创建War文件进行部署?如果是,我将jar文件放在哪里?在WEB-INF/lib中?设置类路径时也是如此leive您需要在users environment.plist(/users/username/.MacOSX/environment.plist)中执行此操作除了你的.bash_配置文件之外,或者代替你的.bash_配置文件。可能会为此而担心,但我似乎不得不对svn javahl及其依赖项这样做。只要告诉Eclipse将.jar文件添加到WEB-INF/lib目录中,如果你是用Eclipse构建的,你不需要处理Maven