Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OSX上的何处安装JAR文件,以便其他Java应用程序可以找到它们?_Java_Macos - Fatal编程技术网

在OSX上的何处安装JAR文件,以便其他Java应用程序可以找到它们?

在OSX上的何处安装JAR文件,以便其他Java应用程序可以找到它们?,java,macos,Java,Macos,我想安装不同的JAR文件,比如OSX上的数据库JDBC驱动器,以便其他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-

我想安装不同的JAR文件,比如OSX上的数据库JDBC驱动器,以便其他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)
注意:我无法控制应用程序的初始化方式,但我假设应用程序不包含它自己的Java发行版,它将启动OS安装版本(可从命令行获得的版本)

另外,我没有任何类路径设置,请记住,命令行程序可用的环境变量与OSX上GUI应用程序可用的环境变量不同


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

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


另一方面,如果您使用像tomcat这样的应用服务器,您可以将jar打包到应用程序的war中,或者将其放入服务器的共享库文件夹中。

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

详细介绍:我为Mac销售一款Java应用程序。它依赖于拥有JAR文件的特定最新版本(对于JFreeChart)。有时,在相应的Extensions文件夹中有相同JAR文件的旧版本。这破坏了我的应用程序

但如果你真的想这样做:根据:

扩展库

其他平台上的Java软件通常使用 要存储的JDK安装中的$JAVA_HOME/lib/ext目录 支持类或jar文件。而Java for Mac OS X也包含 lib/ext目录,开发人员不应直接为 与上述原因相同Library/Java/Extensions目录 可以用于需要修改的其他jar文件或JNI库 放置在系统类路径上。要获得更多受控访问,请 ~/Library/Java/Extensions目录可用于用户级 安装支持库。放置在其中任何一个中的项目 目录不需要在应用程序的类路径和 将适用于在各自范围内运行的所有应用程序 (系统级或用户级,取决于使用的目录)


我将支持Steve的评论,并进一步建议您使用or进行依赖关系管理


图书馆管理是按项目进行的。管理更新和相互依赖性要容易得多。Maven(我不知道Ivy)可以告诉你哪些LIB过时了,哪些相互冲突等等。对于每个项目,你可以精确地指定你需要的版本,而不用担心更改是否会破坏其他项目。

好的,就我的贡献。。。但是我想在命令行上运行我的小数据库程序,但是我需要在类路径中使用mysql-connector-java-5.1.29-bin.jar来运行。我花了一些时间试图弄明白,并找到了解决办法。我将jar文件放到
库/Java/Extensions
文件夹中,并重新启动了我的机器。现在上面说,在“执行”程序时应该包括类路径(
java-cp~/Library/java/Extensions/foo.jar Bar
),但它对我不起作用。相反,我在编译时发出了命令,然后执行了我的程序:

$ 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,职务:销售代表,第一名:玛格丽特,最后一名:孔雀
ID:5,职务:销售经理,第一名:史蒂文,最后一名:布坎南
ID:6,职务:销售代表,第一名:Michael,最后一名:Suyama
ID:7,职务:销售代表,第一名:罗伯特,最后一名:金
ID:8,职务:内部销售协调员,第一名:劳拉,最后一名:卡拉汉
ID:9,职务:销售代表,第一名:安妮,最后一名:多兹沃思

再见


希望这有帮助

您没有使用任何依赖关系管理工具吗?像格雷德尔、马文或蚂蚁/常春藤?这将使您的生活更轻松,但这并不能解释在何处安装jar,而且数据库的示例令人困惑。