在OS X上安装JAR文件的位置,以便其他Java应用程序能够找到它们?

问题描述:

我想安装不同的JAR文件,如OS X上的数据库JDBC驱动器,以便其他Java应用程序可以找到它们。在OS X上安装JAR文件的位置,以便其他Java应用程序能够找到它们?

我应该把它们放在哪里?我试过~/Library/Java/Extensions,但它并没有缝合工作。

详情:

OS X 10.8.2 

java version "1.6.0_35" 
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811) 
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode) 

注:我没有在应用程序是如何初始化的控制,但我不认为申请不incude它自己的Java发行,它会启动OS安装的版本(可从命令行获得的那个)。

另外,我没有任何的CLASSPATH设置,请记住环境变量是提供给命令行程序是不一样的在OS X

我需要指定可用于GUI应用软件的用户我正在为我的开发机器尝试这种方法,并且这种方法不是部署Java应用程序的一种方式。

+0

您是不是使用任何依赖项管理工具?像gradle,maven或ant/ivy?这会让你的生活更轻松。 – maba

它们必须包含在应用程序的类路径中。如果你从命令行执行它,然后使用例如“java -cp〜/ Library/Java/Extensions/foo.jar Bar”

另一方面,如果你使用像tomcat这样的应用服务器,你可以将jar打包到你的应用程序的战争中到服务器的共享库文件夹中。

请不要这样做。原因如下:其他应用程序将中断,因为这些JAR文件将为每个Java应用程序加载。

详细信息:我出售一个适用于Mac的Java应用程序。它依赖于具有特定最新版本的JAR文件(用于JFreeChart)。有时在相应的扩展文件夹中存在相同JAR文件的较旧版本。这打破我的应用程序。

但如果你真的想这样做:根据Apple's docs

扩展库

在其他平台上

Java软件往往使得内使用 $ JAVA_HOME/lib/ext目录的用于存储 支持类或jar文件的JDK安装。虽然Java for Mac OS X还包含一个 lib/ext目录,但是开发人员不应该直接修改它,因为上述原因相同。 /Library/Java/Extensions目录 可用于放置在系统类路径上的附加jar文件或需要为 的JNI库。对于更多受控访问,可以使用 〜/ Library/Java/Extensions目录来安装支持库的用户级别 。放置在这些 目录中的项目不需要在应用程序的类路径中命名,并且 将可用于在相应范围 (系统级或用户级,取决于使用哪个目录)下运行的所有应用程序。

我会第二个史蒂夫的意见,并进一步建议您使用MavenIvy您的依赖管理。

图书馆管理是每个项目。管理更新和相互依赖关系要容易得多。 Maven(我不知道常春藤)可以告诉你哪些库已过期,哪些库相互冲突等。对于每个项目,您可以精确指定所需的版本,而不用担心更改是否会打破其他项目。

好的只是我的贡献......但我想在命令行运行我的小型数据库程序,但我需要类路径中的mysql-connector-java-5.1.29-bin.jar来这么做。我花了一些时间试图找出解决方案。我将该文件放入Library/Java/Extensions文件夹中,然后重新启动我的机器。现在上面说过,当你“执行”程序时(java -cp ~/Library/Java/Extensions/foo.jar Bar),你应该包括classpath,但它对我没有用。相反,我在编译时发出的命令,然后执行我的计划:

$ javac -cp /Library/Java/Extensions/mysql-connector-java-5.1.29-bin.jar FirstExample.java 
$ java FirstExample 

这是我得到了什么...查询数据从我的数据库:

连接到数据库...
创建声明...
ID:1,名称:销售代表,第一:南希,最后:李小明
ID:2,标题:销售副总裁,第一:安德鲁,最后:富勒 ID:3,标题:销售代表,第一名:Janet,最后:Leverling
ID:4,标题:Sales Representative,First:Margaret,Last:孔雀
ID:5,标题:Sales Manager,First:Steven,Last:Buchanan
ID:6,标题:Sales Representative,First:Michael ,最后:须山
ID:7,职务:销售代表,第一:罗伯特,最后:特大
ID:8,题目:内部销售协调员,第一:劳拉,最后:卡拉汉
ID:9,标题:销售代表,第一名:Anne,最后:Dodsworth

再见!

希望这会有所帮助

+0

这并不能解释在哪里安装jar,并且数据库的例子很混乱。 –