[讨论] 编译OpenJDK6去用作调试Oracle/Sun jdk1.6.0_45的源码 可以吗?
AnonymMan
2014-11-20
呼,找到那个错误的解决办法了,因为我的系统是amd64位的,所以需要改下\jdk6_src\j2se\make\sun\jdbc\Makefile 里$(TEMPDIR)/libodbcinst.so: dummyodbc.c $(TEMPDIR)
$(CC) -shared -fPIC -o $@ $< $(TEMPDIR)/libodbc.so: dummyodbc.c $(TEMPDIR) $(CC) -shared -fPIC -o $@ $< 加上-fPIC,在gcc编译的时候能够共享库。 非常感谢R大耐心的解答 |
|
AnonymMan
2014-11-20
R大,我将编译过的j2sdk-debug-image/jre/lib.rt.jar去替换我现在用的6u45的rt.jar,现在运行程序都不可以了,error occurred during initialization of vm。这个办法行不通啊?
并且我去编译oracle6u23的源码,加上-XDignore.symbol.file=true参数依然报错, ByteBufferAs-X-Buffer.java类似这样的源码中有许多"#warn This file is preprocessed before being compiled"、"#if[rw] #end[rw]" 这样的符号,无法编译,请问这是什么情况? |
|
RednaxelaFX
2014-11-21
AnonymMan 写道 R大,我将编译过的j2sdk-debug-image/jre/lib.rt.jar去替换我现在用的6u45的rt.jar,现在运行程序都不可以了,error occurred during initialization of vm。这个办法行不通啊?
呃?如果我能现场调试的话这个应该很好解决。不过您不想麻烦的话可以干脆用编译出来的JDK6u23的j2sdk-image作为主体+j2sdk-debug-image的rt.jar这样组合起来作为您的开发JDK。 AnonymMan 写道 并且我去编译oracle6u23的源码,加上-XDignore.symbol.file=true参数依然报错,
ByteBufferAs-X-Buffer.java类似这样的源码中有许多"#warn This file is preprocessed before being compiled"、"#if[rw] #end[rw]" 这样的符号,无法编译,请问这是什么情况? 嗯这是JDK源码里用的模板⋯这些名字里有-X-的都是模板,在正常编译整个JDK的时候会有特殊处理来把这些模板展开为Java文件。您可以忽略这些文件。 |
|
AnonymMan
2014-11-21
RednaxelaFX 写道 AnonymMan 写道 R大,我将编译过的j2sdk-debug-image/jre/lib.rt.jar去替换我现在用的6u45的rt.jar,现在运行程序都不可以了,error occurred during initialization of vm。这个办法行不通啊?
呃?如果我能现场调试的话这个应该很好解决。不过您不想麻烦的话可以干脆用编译出来的JDK6u23的j2sdk-image作为主体+j2sdk-debug-image的rt.jar这样组合起来作为您的开发JDK。 AnonymMan 写道 并且我去编译oracle6u23的源码,加上-XDignore.symbol.file=true参数依然报错,
ByteBufferAs-X-Buffer.java类似这样的源码中有许多"#warn This file is preprocessed before being compiled"、"#if[rw] #end[rw]" 这样的符号,无法编译,请问这是什么情况? 嗯这是JDK源码里用的模板⋯这些名字里有-X-的都是模板,在正常编译整个JDK的时候会有特殊处理来把这些模板展开为Java文件。您可以忽略这些文件。 R大,我在windows下把编译出来的JDK6u23添加到Eclipse中,运行程序时,JDK6u23的bin目录下的java命令不能执行的,"Exception occurred executing command line. Cannot run program "D:\j2sdk-image\bin\java" (in directory "E:\Eclipse\test"): CreateProcess error=193, %1 ²»ÊÇÓÐЧµÄ Win32 ӦÓó" 第一个问题用这种方法好像不行啊? |
|
RednaxelaFX
2014-11-21
AnonymMan 写道 R大,我在windows下把编译出来的JDK6u23添加到Eclipse中,运行程序时,JDK6u23的bin目录下的java命令不能执行的,"Exception occurred executing command line.
Cannot run program "D:\j2sdk-image\bin\java" (in directory "E:\Eclipse\test"): CreateProcess error=193, %1 ²»ÊÇÓÐЧµÄ Win32 ӦÓó" 第一个问题用这种方法好像不行啊? 想问问您是在什么平台上编译、在什么平台上运行的? 看起来您是在某个Linux上编译然后拷贝到Windows上去运行了?这样显然不能行啊!您得到的java是个ELF文件,不是Windows能执行的PE文件。 莫非之前您也是在Linux上编译了JDK6u23之后把它的rt.jar拷贝到Windows的JDK6里了? |
|
AnonymMan
2014-11-21
RednaxelaFX 写道 AnonymMan 写道 R大,我在windows下把编译出来的JDK6u23添加到Eclipse中,运行程序时,JDK6u23的bin目录下的java命令不能执行的,"Exception occurred executing command line.
Cannot run program "D:\j2sdk-image\bin\java" (in directory "E:\Eclipse\test"): CreateProcess error=193, %1 ²»ÊÇÓÐЧµÄ Win32 ӦÓó" 第一个问题用这种方法好像不行啊? 想问问您是在什么平台上编译、在什么平台上运行的? 看起来您是在某个Linux上编译然后拷贝到Windows上去运行了?这样显然不能行啊!您得到的java是个ELF文件,不是Windows能执行的PE文件。 莫非之前您也是在Linux上编译了JDK6u23之后把它的rt.jar拷贝到Windows的JDK6里了? 是的额,我确实是在Linux下编译的6u23,然后在windows下调试的,将Linux编译好的rt.jar去替换win的rt.jar了.....,那如果想在windows上调试的话,只能在windows上去编译吗? |
|
RednaxelaFX
2014-11-21
AnonymMan 写道 是的额,我确实是在Linux下编译的6u23,然后在windows下调试的,将Linux编译好的rt.jar去替换win的rt.jar了.....,那如果想在windows上调试的话,只能在windows上去编译吗?
嗯,最好在Windows上编译(但当年的JDK6在Windows上要编译通过太麻烦了,各种依赖找不到)。 Linux上编译的JDK6里的rt.jar里虽然都是Java的Class文件,但里面有些类是有平台相关的逻辑的,例如会有些类在不同平台上有不同的子类来实现具体逻辑,所以rt.jar不能在不同平台间直接互换使用… |
|
AnonymMan
2014-11-21
RednaxelaFX 写道 AnonymMan 写道 是的额,我确实是在Linux下编译的6u23,然后在windows下调试的,将Linux编译好的rt.jar去替换win的rt.jar了.....,那如果想在windows上调试的话,只能在windows上去编译吗?
嗯,最好在Windows上编译(但当年的JDK6在Windows上要编译通过太麻烦了,各种依赖找不到)。 Linux上编译的JDK6里的rt.jar里虽然都是Java的Class文件,但里面有些类是有平台相关的逻辑的,例如会有些类在不同平台上有不同的子类来实现具体逻辑,所以rt.jar不能在不同平台间直接互换使用… 那....我想在windows上调试,只能硬下头皮在windows下再编译下6u23了额....对吧,R大. |
|
RednaxelaFX
2014-11-21
AnonymMan 写道 那....我想在windows上调试,只能硬下头皮在windows下再编译下6u23了额....对吧,R大.
还是可以用Ant方式来啊。先jar tf来把您在Windows上的JDK6的rt.jar的文件列表导出,然后写个脚本让Ant把JDK源码包里的Java部分对应的源码找出来编译掉,替换到rt.jar里就好了。 |
|
AnonymMan
2014-11-21
RednaxelaFX 写道 AnonymMan 写道 那....我想在windows上调试,只能硬下头皮在windows下再编译下6u23了额....对吧,R大.
还是可以用Ant方式来啊。先jar tf来把您在Windows上的JDK6的rt.jar的文件列表导出,然后写个脚本让Ant把JDK源码包里的Java部分对应的源码找出来编译掉,替换到rt.jar里就好了。 好滴~ 非常感谢~!! 我去试试。 R大,我尝试按您的方法用jar tf把我现在开发用的rt.jar的文件列表导出,但是去编译列表中的一些java文件会报错,这个怎么解?比如java/nio/ByteBufferAs-X-Buffer.java、 这是错误log http://dl.iteye.com/topics/download/7747778e-3152-3ca2-9ee0-8d9aff3a2119 |
相关讨论
相关资源推荐
- java基础总结(二十)--Oracle/Sun JDK与OpenJDK的区别和联系
- 【Java技术专题】带你认识下Open JDK和Oracle/Sun JDK的关系「原理篇」
- 安卓编译提示You use OpenJDK but only Sun/Oracle JDK is supported.
- OpenJDK和Sun/OracleJDK 区别 与联系
- 【转载】OpenJDK和Sun/OracleJDK 区别与联系
- 如何优雅的编译OpenJDK(Mac 版)
- 在CentOS下编译OpenJDK6过程
- 编译源码时遇到的You are attempting to build with an unsupported JDK问题
- 编译Android 4.4.2源码
- JVM源码分析-JVM源码编译与调试