怎样安装Java se 6 在Mac里

Python011

怎样安装Java se 6 在Mac里,第1张

下载mac版专用的jdk1.7,地址如下:http://jdk7.java.net/macportpreview/,里面有最新版的(不过还是测试版),版本更新频率每两周大概会release一个build,我安装的版本是b223(更新一下,最新版本是b227了,已经不是OpenJDK了)。

下好之后,双击dmg打开,然后简单的来一个拖拽(这个就不废话了,不会拽的面壁去)。

改变jvm首选顺序,在Spotlight里搜索[Java Preferences](中文版应该是JAVA首选项么?),应该能看到已经有的几个虚拟机,把JAVA SE 7拖拽到最上面,就可以了(比如我拖拽的是64位版本的)。

确认java使用的版本:开一个终端,输入java -version,确认jvm的版本号是jdk1.7.0。

下面的操作是如何改变eclipse默认的jre,首先打开eclipse(如果你改了jvm的顺序,让1.7在最上面,又没在eclipse的配置里写死jvm的启动位置,那么应该就已经用jdk1.7启动了)。

打开首选项->Java->Installed JREs,看到右侧的JRE列表,如果已经使用是默认的jdk1.6的话,点Add,选择MacOS X VM,在路径的地方指向到jdk7的安装位置,就可以了。

话没说完,如果你找不到这该死的jdk1.7的安装位置在哪里,可以考虑粘下这个地址(这个是我系统里的位置,我猜测大家的都应该差不多哈)。/Library/Java/JavaVirtualMachines/JDK 1.7.0 Developer Preview.jdk/Contents/Home

正确的话,下面会识别出一堆jar包位置,然后给这一坨jre起个帅气的名字。

如果想启用jdk1.7的语法,必须要eclipse版本在3.8/4.2以上(目前我写这篇博客的时候,4.2已经达到了Milestone4),然后可以在workspace/project属性里把编译等级调整到1.7,就能享受jdk1.7的语言特性了(不过前提是,使用的jdk以及jre必须都是jdk1.7以上才行)。

希望这篇啰嗦的文章对大家有帮助。

更新信息

支持Java7语法的eclipse版本是从3.7开始的,具体见如下地址:http://wiki.eclipse.org/JDT/Eclipse_Java_7_Support_(BETA)

Mac下Eclipse默认还是会使用系统的jdk1.6启动,好像强制修改eclipse.ini的vm参数是无效的,必须修改Eclipse.app/Content/Info.plist,打开看里面有注释写着呢。不过我这里eclipse4.2M4修改后依然无效。

有时候会出现部分应用还使用旧的jdk1.6的情况出现,例如maven有时候就会坚持用旧版的,这时候只好找个地方导出下JAVA_HOME变量了。改到jdk1.7的Home目录即可。

jdk1.7 macport从b11开始合并了分支代码,开始已经直接使用安装程序安装了,相应安装到的路径也改变了,是这个:/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home 。update on 2012-2-12

jdk1.7u6 b09开始,bundle name变更,这样就可以在安装新版本的同时保留旧版本了。当然了,路径也会变化,变成了这个样子:/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk,其中06是update版本号。简易大家可以做一个软连接,cd /Library/Java/JavaVirtualMachinesln -s jdk1.7.0_06.jdk 1.7.0.jdk,这样就不会受到版本升级的影响了(这样eclipse里设置的JRE路径就用软连接里的路径就好了)。

以windows举例。\x0d\x0a运行命令" cmd ipconfig /all"就会出现以下结果\x0d\x0a \x0d\x0aPhysical Address. . . . . . . . . : 20-CF-30-9A-60-EE\x0d\x0a。\x0d\x0ajava就能过这样的命令来获取。以下是示例。\x0d\x0a\x0d\x0aimport java.io.BufferedReader\x0d\x0aimport java.io.IOException\x0d\x0aimport java.io.InputStreamReader\x0d\x0a\x0d\x0apublic class TestMac\x0d\x0a{\x0d\x0a public static void main(String[] args) {\x0d\x0aSystem.out.println("Operation System=" + getOsName())\x0d\x0aSystem.out.println("Mac Address=" + getMACAddress())\x0d\x0aSystem.out.println("通过ip获取mac"+getMACAddress("192.168.1.101"))\x0d\x0a }\x0d\x0a\x0d\x0apublic static String getOsName() {\x0d\x0aString os = ""\x0d\x0aos = System.getProperty("os.name")\x0d\x0areturn os\x0d\x0a}\x0d\x0a\x0d\x0apublic static String getMACAddress() {\x0d\x0aString address = ""\x0d\x0aString os = getOsName()\x0d\x0aif (os.startsWith("Windows")) {\x0d\x0atry {\x0d\x0aString command = "cmd.exe /c ipconfig /all"\x0d\x0aProcess p = Runtime.getRuntime().exec(command)\x0d\x0aBufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()))\x0d\x0aString line\x0d\x0awhile ((line = br.readLine()) != null) {\x0d\x0aif (line.indexOf("Physical Address") >0) {\x0d\x0aint index = line.indexOf(":")\x0d\x0aindex += 2\x0d\x0aaddress = line.substring(index)\x0d\x0abreak\x0d\x0a}\x0d\x0a}\x0d\x0abr.close()\x0d\x0areturn address.trim()\x0d\x0a} catch (IOException e) {\x0d\x0a}\x0d\x0a} else if (os.startsWith("Linux")) {\x0d\x0aString command = "/bin/sh -c ifconfig -a"\x0d\x0aProcess p\x0d\x0atry {\x0d\x0ap = Runtime.getRuntime().exec(command)\x0d\x0aBufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()))\x0d\x0aString line\x0d\x0awhile ((line = br.readLine()) != null) {\x0d\x0aif (line.indexOf("HWaddr") >0) {\x0d\x0aint index = line.indexOf("HWaddr") + "HWaddr".length()\x0d\x0aaddress = line.substring(index)\x0d\x0abreak\x0d\x0a}\x0d\x0a}\x0d\x0abr.close()\x0d\x0a} catch (IOException e) {\x0d\x0a}\x0d\x0a}\x0d\x0aaddress = address.trim()\x0d\x0areturn address\x0d\x0a}\x0d\x0a\x0d\x0apublic static String getMACAddress(String ipAddress) { \x0d\x0aString str = "", strMAC = "", macAddress = ""\x0d\x0atry { \x0d\x0aProcess pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress)\x0d\x0aInputStreamReader ir = new InputStreamReader(pp.getInputStream())\x0d\x0aLineNumberReader input = new LineNumberReader(ir)\x0d\x0afor (int i = 1i str = input.readLine()\x0d\x0aif (str != null) { \x0d\x0aif (str.indexOf("MAC Address") >1) { \x0d\x0astrMAC = str.substring(str.indexOf("MAC Address") + 14, \x0d\x0astr.length())\x0d\x0abreak\x0d\x0a} \x0d\x0a} \x0d\x0a} \x0d\x0a} catch (IOException ex) { \x0d\x0areturn "Can't Get MAC Address!"\x0d\x0a} \x0d\x0a// \x0d\x0aif (strMAC.length() return "Error!"\x0d\x0a} \x0d\x0a\x0d\x0amacAddress = strMAC.substring(0, 2) + ":" + strMAC.substring(3, 5) \x0d\x0a+ ":" + strMAC.substring(6, 8) + ":" + strMAC.substring(9, 11) \x0d\x0a+ ":" + strMAC.substring(12, 14) + ":" \x0d\x0a+ strMAC.substring(15, 17)\x0d\x0a// \x0d\x0areturn macAddress\x0d\x0a} \x0d\x0a} \x0d\x0a\x0d\x0a剑天梦的回答原理和我这个一样,都是通过Process 执行命令。 我直接补充到答案里了。不过\x0d\x0a我这边运行那个命令出来的结果很多,那么花的时间就长了。优点是能够获取别人的mac地址 。