[讨论] 在Windows中构建OpenJDK8u已经很简单了
erdas_zhuang
2014-10-23
ZHH2009 写道 提示信息只是说windows相关的dll的pdb没找到,这个很正常的,除非你的windows也是可调试的。openjdk的明显提示Symbols loaded了呀。
你可以把错误输出到一个日志文件的 怎么输出: 引用 在Visual Studio左边的Solution Explorer窗口中右击jvm项目, 在弹出菜单中选择Properties,紧接着出来"jvm Property Pages"窗口, 点Configuration Properties -> Debugging 在Command 最后加上 >E:\log.txt 2>&1 就可以重定向了 I got an error dialog, saying "Unable to start problem '[***]build\windows-x86_64-normal-server-fastdebug\images\j2sdk-image\bin\java.exe > D:\log.txt 2>&1'. The system cannot find the file specified. 另外,你构建的是server版的jdk, 引用 windows-x86_64-normal-server-fastdebug
在“1. 生成Visual Studio项目 ”那里生成的是client版的jvm还是server? 我看了一下vs的项目设置,都是指向我曾经的64位jvm build,所以我觉得应该是server。 我前面的问题都是围绕你的文章里面的最后一步,“3. 调试HotSpot VM ”,我按F5出错,断点没有用啊。这个和jvm是client版本还是server版本有关系吗? 我今天重新创建了一个新的virtual machine,安装32位win7,然后报下面的错误(java.lang.OutOfMemoryError: Java heap space). 也就是因为这个问题,我才最后不得不用64的jdk7做bootstrap,然后不得不创建64位的openjdk8 server版本,因为client版本没有64位的。 我不知道你是如何解决这个(java.lang.OutOfMemoryError: Java heap space)问题的。不吝赐教,谢谢。 Generating HTML DTD file [Parsed DTD html32 in 62ms] Compiling 9185 files for BUILD_JDK The system is out of resources. Consult the following stack trace for details. java.lang.OutOfMemoryError: Java heap space at com.sun.tools.javac.util.Position$LineMapImpl.build(Position.java:153) at com.sun.tools.javac.util.Position.makeLineMap(Position.java:77) at com.sun.tools.javac.parser.JavaTokenizer.getLineMap(JavaTokenizer.java:763) at com.sun.tools.javac.parser.Scanner.getLineMap(Scanner.java:127) at com.sun.tools.javac.parser.JavacParser.parseCompilationUnit(JavacParser.java:3130) at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:628) at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:665) at com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:950) at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:855) at com.sun.tools.javac.main.Main.compile(Main.java:523) at com.sun.tools.javac.main.Main.compile(Main.java:381) at com.sun.tools.javac.main.Main.compile(Main.java:370) at com.sun.tools.javac.main.Main.compile(Main.java:361) at com.sun.tools.javac.Main.compile(Main.java:56) at com.sun.tools.javac.Main.main(Main.java:42) CompileJavaClasses.gmk:333: recipe for target '/cygdrive/c/OpenJDK/jdk8u-dev/build/windows-x86-normal-client-fastdebug/jdk/classes/_the.BUILD_JDK_batch' failed make[2]: *** [/cygdrive/c/OpenJDK/jdk8u-dev/build/windows-x86-normal-client-fastdebug/jdk/classes/_the.BUILD_JDK_batch] Error 3 BuildJdk.gmk:64: recipe for target 'classes-only' failed make[1]: *** [classes-only] Error 2 /cygdrive/c/OpenJDK/jdk8u-dev//make/Main.gmk:115: recipe for target 'jdk-only' failed make: *** [jdk-only] Error 2 |
|
ZHH2009
2014-10-23
引用 我前面的问题都是围绕你的文章里面的最后一步,“3. 调试HotSpot VM ”,我按F5出错,断点没有用啊。这个和jvm是client版本还是server版本有关系吗? 构建jdk时,32位如果指定了server版,在另外生成vs项目时,在32位上默认是client版的,client版的jvm肯定是和server版不一样的,client版没有编译C2编译器。 client版的jvm在vs中对应那个opto下的文件都有个红杠,就表示不包含C2编译器的代码。 引用 I got an error dialog, saying "Unable to start problem '[***]build\windows-x86_64-normal-server-fastdebug\images\j2sdk-image\bin\java.exe > D:\log.txt 2>&1'. The system cannot find the file specified. 是j2sdk-image\bin\java.exe没找到? 还是先解决为什么窗口一闪而过的问题,只有知道里面的错误提示信息才好判断错误原因是什么。 引用 The system is out of resources. Consult the following stack trace for details. java.lang.OutOfMemoryError: Java heap space 这多半是你内存不够了 另外,在虚拟机上构建jdk,我看到之前有网友说碰到不少问题,我不是在虚拟机上构建的,我的机器内存是4G,可用内存是2G多 |
|
ZHH2009
2014-10-23
erdas_zhuang 写道 ZHH2009 写道 你可以把错误输出到一个日志文件的 怎么输出: 引用 在Visual Studio左边的Solution Explorer窗口中右击jvm项目, 在弹出菜单中选择Properties,紧接着出来"jvm Property Pages"窗口, 点Configuration Properties -> Debugging 在Command 最后加上 >E:\log.txt 2>&1 就可以重定向了 I got an error dialog, saying "Unable to start problem '[***]build\windows-x86_64-normal-server-fastdebug\images\j2sdk-image\bin\java.exe > D:\log.txt 2>&1'. The system cannot find the file specified. Sorry ,之前少输入个英文单词了, 是Command Arguments不是Command ">E:\log.txt 2>&1" 加在Command Arguments最后就会把错误信息重定向到log.txt |
|
erdas_zhuang
2014-10-24
ZHH2009 写道 erdas_zhuang 写道 ZHH2009 写道 你可以把错误输出到一个日志文件的 怎么输出: 引用 在Visual Studio左边的Solution Explorer窗口中右击jvm项目, 在弹出菜单中选择Properties,紧接着出来"jvm Property Pages"窗口, 点Configuration Properties -> Debugging 在Command 最后加上 >E:\log.txt 2>&1 就可以重定向了 I got an error dialog, saying "Unable to start problem '[***]build\windows-x86_64-normal-server-fastdebug\images\j2sdk-image\bin\java.exe > D:\log.txt 2>&1'. The system cannot find the file specified. Sorry ,之前少输入个英文单词了, 是Command Arguments不是Command ">E:\log.txt 2>&1" 加在Command Arguments最后就会把错误信息重定向到log.txt 把log dump to the file, and check the log file. It says "Error: loading: [***]\jdk8u-dev\hotspot\build\vs-i486\compiler1\debug\jvm.dll" 我查了一下那个目录, jvm.dll is there. 还有,我按照你的“在Windows平台构建与调试HotSpot.md” (https://github.com/codefollower/OpenJDK-Research/blob/master/hotspot/my-docs/%E5%9C%A8Windows%E5%B9%B3%E5%8F%B0%E6%9E%84%E5%BB%BA%E4%B8%8E%E8%B0%83%E8%AF%95HotSpot.md),也就是直接用java.exe inside JDK8就可以调试hotspot jvm.dll. 难道前面我编译j2sdk-image的java.exe不正确? Thanks. |
|
ZHH2009
2014-10-24
引用 The log file says "Error: loading: [***]\jdk8u-dev\hotspot\build\vs-i486\compiler1\debug\jvm.dll" 我查了一下那个目录,jvm.dll is there. compiler1就是client版的JVM哈, 你在bash ./configure时使用--with-jvm-variants=client再编译一次吧 java.exe不属于HotSpot VM的, java.exe属于jdk\bin 就算java.exe无法debug, 你不是在Threads.cpp文件里打断点了么,总会跳到那的。 |
|
ZHH2009
2014-10-24
erdas_zhuang 写道 还有,我按照你的“在Windows平台构建与调试HotSpot.md” (https://github.com/codefollower/OpenJDK-Research/blob/master/hotspot/my-docs/%E5%9C%A8Windows%E5%B9%B3%E5%8F%B0%E6%9E%84%E5%BB%BA%E4%B8%8E%E8%B0%83%E8%AF%95HotSpot.md),也就是直接用java.exe inside JDK8就可以调试hotspot jvm.dll. 难道前面我编译j2sdk-image的java.exe不正确? Thanks. 这个是另一种办法,是不需要编译整个OpenJDK的,只需要单独编译HotSpot就可以了。 跟这个主贴说的内容是不一样的。 |
|
erdas_zhuang
2014-10-25
ZHH2009 写道 引用 The log file says "Error: loading: [***]\jdk8u-dev\hotspot\build\vs-i486\compiler1\debug\jvm.dll" 我查了一下那个目录,jvm.dll is there. compiler1就是client版的JVM哈, 你在bash ./configure时使用--with-jvm-variants=client再编译一次吧 #我的机器是64位,没法用client这个参数, the default value for this jvm-variants is "server". I do not have the physical machine which has 32bit win7 with 4G RAM. java.exe不属于HotSpot VM的, java.exe属于jdk\bin #Correct. 就算java.exe无法debug, 你不是在Threads.cpp文件里打断点了么,总会跳到那的。 #因为出了这个错,“Error: loading: [***]\jdk8u-dev\hotspot\build\vs-i486\compiler1\debug\jvm.dll”,所以跳不到那. 查了一下openjdk邮件列表,2013年5月就有人问了同样的问题,http://mail.openjdk.java.net/pipermail/hotspot-dev/2013-May/009742.html,只是没有人follow-up. 看来目前为止,我没法setup dev environment on 64 bit win7 machine. I might need to switch to ubuntu machine. Anyhow, still great thank-you for your help and this post. |
|
ZHH2009
2014-10-25
邮件那个是没有pdb,如果你发现你构建后有diz之类的文件,把diz文件解压,里面就有pdb了
java.exe的diz文件在我的机器上的目录是: build\windows-x86-normal-client-fastdebug\jdk\bin 我这里没有64位的windows7,所以无法重现你的问题。 |
|
erdas_zhuang
2014-10-28
终于,上周末重新思考一下,想想自己碰到的问题。试验了一下,招到了解决的方法了。
D:\VS2010\Common7\Tools\vsvars32.bat 适用于32位win7 对于64位,应该用C:\vs2010\VC\bin\amd64\vcvars64.bat This should fix the problem. (of course, you need to install x64 vs2010.) Also for the 32 bit win7 virtual machine, if you run into the issue of "java.lang.OutOfMemoryError: Java heap space", just increase the memory for this virtual machine by using PatchPae.zip (download it and run some cmd which comes with this zip file) 现在重新看看这个solution,真是很简单,还是要向版上的ZHH2009和R大多多学习。 最后感谢ZHH2009的热心答复! |
相关讨论
相关资源推荐
- 构建openjdk镜像_在Windows上构建OpenJDK
- JVM学习—— win10 下构建64位 openJDK8 完整篇
- Windows 11,cygwin + Visual Studio 2017编译OpenJDK12
- WINDOWS编译OpenJDK8的问题及解决办法
- openjdk:8镜像中安装工具命令的方法
- 在windows8.1编译OpenJDK8
- linux编译openjdk8,在Ubuntu 16.04上编译OpenJDK8的源代码
- OpenJDK8 编译与调试
- Linux构建JVM(HotSpot) 源码调试环境(OpenJDK8)
- OpenJDK8 Windows编译