|
阅读:1296回复:20
谁有,JDK FOR LINUX
上不了网,谁有现成的,给一份。:D
|
|
|
1C#
发布于:2001-11-15 21:37
Re:Re:谁有,JDK FOR LINUX
不好意思,没有那么回事了,在下水平有限,既看不懂JDK源代码也没有学到那个深度,只是从sun下了一个"J2sdkse1.3.0forLinux.RPM.bin"匆匆忙忙的装了起来,只是为了体验一下,初学Linux有好多不懂的地方还得多问Kmwang & MuMu呀!:D |
|
|
2C#
发布于:2001-11-14 21:11
Re:谁有,JDK FOR LINUX
原文另附有多图,针对WIN32版有较多注明。Linux平台想也大致如此。抱歉才找到。//By mumu.
到目前为止,Sun Microsystems的网站上只释出了Java2 SDK 1.3 Win32版本的原始码,而Java2 SDK Solaris/Linux版本的原始码最多只到1.2.2。因此本文内容只适用于Java2 SDK 1.3的Win32版本原始码。所有的操作皆在Windows 2000 Professional操作系统上经过测试。如果您在不同的平台上验证本文内容,或是使用将来释出的Solaris版本、Linux版本的原始码。我们无法保证会有相同的结果。 █如何编译Java2 SDK 原始码 当我们深入了解Java2 SDK原始码之后,很多工程师必定想自己尝试修改原始码,然后进行编译,我想这是身为一个工程师最大的乐趣。当然,在我们还没有修改之前,我们也必须试着编译整个原始码,顺便测试一下原始码是否完整,因此接下来要介绍编译Java 2原始码的准备步骤和方法。 要顺利编译Java2 SDK原始码,您必须符合底下几种条件: 操作系统 您必须在Windows NT 4.0或是Windows 2000上才能顺利编译Java 2原始码。一旦编译完成之后,所产生的执行文件或是动态连结和式库将能够在所有的Win32作业平台上执行。 硬设备 在Java2 SDK原始码内附的文件之中,建议的硬设备为Pentium等级的处理器,配上至少128 MB的内存。在笔者的计算机上,Pentium III 450配上PC 100 128 MB 的内存,总共花了将近2.5个小时完成所有编译动作。如果算上编译时期遇到的一些错误以及恢复错误的时间,大概花了3个小时。 开发工具 我们必须准备几项工具,他们分别是: Microsoft Visual C++ version 6.0,并配上最新的Service pack(或者Visual Studio 97配上Service Pack 3)。 在Java2 SDK原始码之中,存在有许多与Windows平台相关的程序代码,这些程序代码都以C语言撰写而成,为了顺利编译这些原生程序代码,我们必须要借助Visual C++编译器以便产生能在Windows平台上执行的执行档(.exe)以及动态连结和式库(.dll)。 同时,Java2 SDK原始码之中有许多Makefile,这些Makefile是用来控制所有程序的编译动作。我们必须借助Visual C++内附的nmake.exe这个工具以帮助我们解读这些Makefile并顺利编译出整个Java2 SDK。 MKS Toolkit version 5.2以上的版本。 MKS Toolkit是一套能够在Windows上仿真UNIX执行环境的工具,请到http://www.mks.com下载这套工具的30天试用版(正式版必须要付费)。或者如果您有订阅MDSN Profession以上的版本,您可以在光盘中找到Microsoft Windows Services for UNIX 2.0 Add-On Pack(在UNIX20_INSERV\3RDPARTY\MKS目录底下,执行x86子目录中的setup.exe即可安装)。30天试用版的功能骑士和付费版本的功能一样,只不过当您在编译Java2 SDK原始码的时候,只要用到了MKS Toolkit里的工具,就会出现一个广告画面罢了,应该不会影响您的心情才是。 Java2 SDK 1.3的可执行版本。 相信读者们看到这个地方,一定会觉得很疑惑。奇怪,编译Java2 SDK的原始码竟然也需要Java2 SDK的协助? 不禁让人想起鸡生蛋蛋生鸡的问题,不是吗? 其实Java2 SDK在整个编译过程中,扮演的是bootstrap compiler(靴带式编译器)的角色。之所以需要Java2 SDK的原因是因为大家在编译Java程序时所使用的javac.exe核心程序竟然也是用Java撰写而成的,由于Java2 SDK的原始码有许多与平台无关、以Java程序语言所撰写的程序,因此在编译初期,我们必须借助过去旧版的Java2 SDK或是JDK帮助我们产生新版的Java2 SDK,再利用新产生的新版javac.exe编译Java2 SDK原始码内的其它 .java檔。 当大家将所有必备的条件都准备妥当之后,接着我们要开始准备编译前的相关工作。底下的内容将有下列假设: 工具 安装路径 Windows NT/2000系统所在目录 c:\winnt Microsoft Visual C++ version 6.0 d:\Microsoft Visual Studio Microsoft Visual Studio 97 d:\Program Files\DevStudio MKS Toolkit c:\mskdemo\mksnt Java2 SDK 1.3的可执行版本 d:\jdk1.3 Java2 SDK 原始码 d:\jdk1.3-src 接下来我们要设定环境变量,为了方便起见,请大家新增一个叫做env.bat的批次档,这样以后要修改环境变量的时候就不必大费周章: 如果您使用的C编译器为Microsoft Visual C++ version 6.0,那幺env.bat的内容如下: env.bat set MSVCDir=d:\Microsoft Visual Studio\vc98 set MSDevDir=d:\Microsoft Visual Studio\Common\MSDev98 set WinDir=c:\winnt set include=%MSVCDir%\include;%MSVCDir%\mfc\include;%MSVCDir%\atl\include set lib=%MSVCDir%\lib;%MSVCDir%\mfc\lib set PATH=c:\mskdemo\mksnt;%MSVCDir%\bin;%MSDevDir%\bin;%WindowsDir%\system32;%PATH% set ALT_BOOTDIR=d:\jdk1.3 set TMPDIR=d:\jdk1.3-src\tmp 如果您使用的C编译器为Microsoft Visual Studio 97,那幺env.bat的内容如下: env.bat set MSVCDir= d:\Program Files\DevStudio\VC set MSDevDir= d:\Program Files\DevStudio\SharedIDE set WinDir=c:\winnt set include=%MSVCDir%\include;%MSVCDir%\mfc\include;%MSVCDir%\atl\include set lib=%MSVCDir%\lib;%MSVCDir%\mfc\lib set PATH=c:\mskdemo\mksnt;%MSVCDir%\bin;%MSDevDir%\bin;%WindowsDir%\system32;%PATH% set ALT_BOOTDIR=d:\jdk1.3 set TMPDIR=d:\jdk1.3-src\tmp 任何一个环境变量设定有误,都会造成编译错误,请读者们务必小心。关于环境变量,底下有几件事情请读者一定要注意: 对于PATH环境变量来说,MKS Toolkit的路径一定要出现在Microsoft Visual C++ version 6.0(或是Microsoft Visual Studio 97)的所在路径之前,否则会造成编译错误。所以请不要将PATH设定为:set PATH=%MSVCDir%\bin;%MSDevDir%\bin;c:\mskdemo\mksnt; %WindowsDir%\system32; %PATH%(MKS Toolkit出现在Microsoft Visual C++ version 6.0(或是Microsoft Visual Studio 97)的所在路径之后) 请关闭CLASSPATH环境变量。如果您是在Windows 2000底下,请在”我的计算机”图标上按下鼠标右键,选择”内容”,点选”进阶”次页,再按下”环境变量”按钮。将出现环境变量对话框,如下图所示: 请寻找使用者变量中或是系统变量中任何名为CLASSPATH的环境变量删除,否则在编译Java2 SDK原始码初期就会出现错误讯息。 环境变量ALT_BOOTDIR是用来设定bootstrap compiler(靴带式编译器)的所在位置,您只要设定为Java SDK的安装位置就可以了。 当上述准备工作全部完成之后,请开启”命令提示字符”窗口(就是DOS窗口啦!),并将目录切换到d:\jdk1.3-src\build\win32底下,在命列上输入 nmake world 此时编译Java2 SDK原始码的过程正式展开,毫无疑问地,这将是一个漫长的过程。 在编译的过程之中,在笔者的计算机上出现了一些编译错误,在这里顺便向各位提及,顺便说明笔者的解决办法: 找不到 .properties檔: 在编译Java2 SDK原始码的时候常常出现找不到 .properties文件的错误讯息,如果发现编译终止的原因是因为在个特定目录底下找不到某个 .properties档,那幺请读者自行搜寻 jdk1.3-src\src目录底下,一定能找到编译器所找不到的 .properties档,请将这个 .properties档复制到编译器期望该档案所在的目录底下即可解决。 找不到 .class檔: 在编译Java2 SDK原始码初期的时候常常出现找不到 .class文件的错误讯息,笔者发现这些找不到的类别档都是放置在jdk1.3-src\ext\i18n\src\share\sun\io\底下,之所以会找不到这些.class档的缘故是因为根据Makefile里头的内容,jdk1.3-src\ext目录里的原始码会较晚编译,而我们又关掉了CLASSPATH环境变量,导致在需要这些档案的时候,这些档案尚未从 .java档编译成 .class档,很自然地编译器就无法编译。要解决这个问题,请读者们先行到jdk1.3-src\ext\i18n\src\share\sun\io\底下,输入javac *.java以产生所有需要的 .class档,然后将这些新产生的.class档复制到jdk1.3-src\build\win32\classes\sun\io这个目录底下。这样一来,就再也不会遇到找不到 .class文件的错误讯息了。 Java2 SDK原始码的内附文件中要我们设定环境变量TMP,但是实际的测试结果,发现在这个路径似乎在编译过程中一点用处也没有,反倒是编译的时候有用到环境变量TEMP所指向的目录(在Windows 2000底下这个环境变量被设定为 %USERPROFILE%\Local Settings\Temp),不知道是不是写说明档的人不小心漏打字。 当编译工作告一段落之后,您将可以在jdk1.3-src\build\win32目录下找到所有编译过的执行档以及 .class档,还有一些编译过程中产生的中间档。 jdk1.3-src\build\win32\bin目录下,您将会看到所有让Java2 SDK正常运作的执行文件以及动态联结函式库。又由于我们是使用make world指令,如果您观察一下这个目录,您会发现每个档案都有最佳化版本与除错版本(ex: java.exe与java_g.exe,其它以此类推)。 jdk1.3-src\build\win32\lib目录下将放置所有让Java程序能够顺利执行的套件函式库,例如i18n.jar等,在jdk1.3-src\build\win32\lib\ext目录下可以找到iiimp.jar等扩充套件还有一些资源档。 jdk1.3-src\build\win32\classes目录下放置了最后会压缩成rt.jar的所有 .class檔(类别档)。 另外,除了输入 nmake world 指令之外,Makefile之中定义了其它非world的编译选项,请参阅下表: 编译指令 作用 nmake all 建立Java SDK核心程序的除错版本以及最佳化版本 nmake ext 建立Java SDK扩充程序的除错版本以及最佳化版本 nmake world (同nmake world-all) 建立all与ext中所有的程序 nmake releasedocs 执行javadoc.exe以产生Java SDK说明文件 nmake alldocs 执行javadoc.exe以产生在sun.*套件之下程序的所有说明文件 Nmake world-clobber 删除前一次编译之后产生的所有档案和目录 如果您想要了解所有的选项,请您自行开启jdk1.3-src\build\win32\Makefile或是jdk1.3-src\build\win32\makefiles\defs.nmk这两个档案做更深入的研究。 Java Developer Connection http://developer.java.sun.com/developer/ Java2原始码下载 http://www.sun.com/software/communitysource/java2 -------------------- 亲爱的小木头:?你回来了! |
|
|
|
3C#
发布于:2001-11-14 20:59
Re:谁有,JDK FOR LINUX
To aph,
是不是真的编译出来jdk了,很不容易吧? |
|
|
|
4C#
发布于:2001-11-14 20:57
Re:谁有,JDK FOR LINUX
我学习网络的时候觉得Linux必不可少,
现在学编程,学得比较花,还够不上看懂那些经典的源程序,只好委身微软了(微软似乎看起来稍微简单)。 我现在只看Wins版本的Linux程序,比如学MySQL的API,wins版本的PERL源代码和wins的Emacs,很少用那个操作平台了。只是觉得一定要兼容它。 其实Linux我最喜爱的是gcc/grep。可惜没的用。Emacs是Richard Stallman维护的,也爱无及屋吧。 -------------------- 亲爱的小木头:?你回来了! |
|
|
|
5C#
发布于:2001-11-12 19:18
Re:Re:回复:Re:谁有,JDK FOR LINUX
To KMWang:
我已经把路径设置好了,是在当前用户根目录下的".bash_profile"中设置的,书上说还有一种方法是用root用户设置"etc/profile",不知道您说的"./bashrc"是什么,能讲一讲么? 另外:gcj是可以编译java但是我用什么来运行呢,不是还得用jdk么?那样不还是有跨平台性么?我的机器是PIII 700不知道运行Forte会怎么样,JBuild的速度我倒是见识过了,恐怖!vi难道没有对java的语法加亮???我现在用Kate写java。 还有,我在RH KDE下写了如下测试语句: import java.awt.*; public class HelloFrame{ public static void main(String[] args){ Frame f = new Frame("Hello"); f.setSize(200,300); f.show(); } } 编译通过,但是运行时报告说什么字体错误,这是怎么回是??? :D |
|
|
6C#
发布于:2001-11-11 23:52
Re:回复:Re:谁有,JDK FOR LINUX
木木,我用Linux仅仅编程,看看他们的设计,不过我不知道你在用它干嘛,我的Linux除了汉字差点,别的还都挺好的。Yacc用的少,Lex倒是很有用,其实grep用好了,lex用起来很顺手。Emacs有那么多用户,自然有它的好处,只是我们都习惯了M$的东西罢了。我么,还在用我的kmide :) |
|
|
7C#
发布于:2001-11-11 23:42
Re:Re:Re:谁有,JDK FOR LINUX
jcj上次打错了。gcj |
|
|
8C#
发布于:2001-11-11 23:40
Re:Re:Re:谁有,JDK FOR LINUX
没指路经吧,rpm包把java SDK 装在/usr/java下面,例如我的机器里面是/usr/java/jdk1.3.1_01,可执行文件在/usr/java/jdk1.3.1_01/bin下面。
可以在~/.bashrc里面加入路径。 如果你的机器P4-1.5G以上可以再装个Forte,反正我的毒龙750着实太慢。 |
|
|
9C#
发布于:2001-11-11 21:29
Re:谁有,JDK FOR LINUX
这里用了蛋生鸡的办法,先得编译好你的编译器,再用新的编译器编译你的新Java。
最好你先看看编译文档,有什么注意事项。详细内容我回去给你查一下。 |
|
|
|
10C#
发布于:2001-11-11 14:22
Re:Re:谁有,JDK FOR LINUX
To KMWang & MuMu:
1.What is jcj? 2.I have download the JDK for Linux and 'rpm -i' but con't run javac/java, how can I set path in Linux? |
|
|
12C#
发布于:2001-11-10 22:54
Re:谁有,JDK FOR LINUX
跟mumu学会了有用的才是最好的。
:):D;):rolleyes::fool: -------------------- 亲爱的小木头:?你回来了! |
|
|
|
13C#
发布于:2001-11-10 22:52
Re:谁有,JDK FOR LINUX
跟songbai学会了新的才是最好的。
跟KMWang学会了自己的才是最好的。 |
|
|
|
14C#
发布于:2001-11-10 22:47
Re:谁有,JDK FOR LINUX
经典的东西不必要新,自己够用就行。
--------------------
亲爱的小木头:?你回来了! |
|
|
|
15C#
发布于:2001-11-10 22:40
回复:回复:Re:谁有,JDK FOR LINUX
不过话说回来,有好的东东,谁不想亲自见识一下呢?
学Linux至少可以见识一下Wins的局限,和不同思路的解决方式。比如,Wins因为是消息响应循环,Socket实现就采取了阻塞式。 学C #可以看看对C++改变在那里,那里有模糊。 大师们没有太专一于某一,而是注重合适。 [ 2001-11-10 22:45:41 mumu 修改 ] |
|
|
|
16C#
发布于:2001-11-10 22:33
回复:Re:谁有,JDK FOR LINUX
自己编译很有难度,没有实验过。编译时用的是鸡生蛋,蛋生鸡的办法。
有哦,我有12张盘的XteamLinux,在TurboLinux的开发版里面也有。别的版本我没有用过。Soloris想当然会有,Sun的网站更有。 To KMWang:(About)RedHat我个人意见,并不算最好用的Linux:-(。 (别怪我说实话啊!当然习惯了也不分什么好不好用。如同输入法,五笔最快,但未必会习惯。可能中科院的人只会认为RedFlag最好用。) Linux既然是Linux,是世界的,才是中国的,建议大家不要用什么中国式的Linux。(如果有真的兼容,没有分别,何必用呢?否则有分别,怎么能用!) 乱弹一下:强大应该算TurboLinux,可以按自己要求配置(bug虽然不少),但不够安全。方便易用该是Mandrake,但版本单调,没有套路。至于中文本地化的Linux,我认为Linux本来不是为初学者使用的,它的特点是简约规范,本质而且经典,很方便学习编程、控制和算法,不学点E文,不PRO一点,会让外行看笑话。作中文版本身就是悖论。(实际上大家也没有必要用中文版的WINS) 为什么WPS没有FOR LINUX?因为它有自己的本分,作Linux版赚不了钱。他们没有幻想很多老百姓会拿Linux作平台。至于大家学习Linux,如果不是准备感受Open Source带来的好处,不必浪费时间学什么Linux。Wins 32虽然大家都喊烂,可是最通用流行的东西很轻松就可以学到,何必跟自己过不去呢?如果觉得Wins没什么吸引自己可学的,建议你先编一个自己的Oicq,体验在Wins的可视话带来的方便,和网络编程、数据库访问、线程同步面临的诸多问题,一样会令你焦头烂额,兴致盎然:D。万一深入了以后问题更多。 很多好的东西,其实需要一个环境来支持。面对Linux,真是有很复杂的感情,很喜欢它,可能力有限,用它却没有用。谁编程用Emacs,并且写Lisp无限完善呢?Lex&Yacc很好,可是连KMWang也未必用它。如果没有确定的目的,mumu建议Linux应当缓学。 -------------------- 亲爱的小木头:?你回来了! |
|
|
|
17C#
发布于:2001-11-10 21:31
Re:Re:谁有,JDK FOR LINUX
木木,好像没有吧,到联邦软件买128元一套的企业版肯定有,先用jcj编译吧,本地码,运行快,可惜不能跨平台了:( |
|
|
18C#
发布于:2001-11-10 16:56
Re:谁有,JDK FOR LINUX
我用的是Redhat 7.2正式版,可是上面没有呀!
另外Redhat 7.1Beta上面好像也没有??? 顺便问一下jdk在Redhat7.1的哪张盘上? |
|
|
19C#
发布于:2001-11-07 11:15
Re:谁有,JDK FOR LINUX
你用什么版本的?
好多版本都自带呢:) 正版的REDHAT7。1上就有,当然以前的7。0上也有:) -------------------- 只是想做自己想做的事... 这就是小混混石:) |
|
|
|
20C#
发布于:2001-11-02 14:11
Re:谁有,JDK FOR LINUX
那可不行,不可以白给的呀! |
|
|