【发布时间】:2015-08-08 17:12:16
【问题描述】:
我已经根据自己的需要修改了一些核心 Java 类,例如。在 Java.lang.String 匹配方法中使用正则表达式缓存。
我想使用这些修补类而不是 jre 附带的 rt.jar 中的默认类。
我已将 src.zip 源文件导入到 eclipse 中,其中包含 rt.jar 中类文件的所有源文件,并根据我的需要进行了更改。然后,我从 eclipse JRE 库配置中删除了 rt.jar,并更改了 eclipse 中已安装 JRE 的默认 VM 参数选项,以告诉 VM 使用我自己的自定义核心类>
-Xbootclasspath/p: /media/SSD/workspace/proj/bin/
但是,当运行一个简单的测试程序时,VM 无法启动并显示以下内容>
“无法找到或加载主类 .media.SSD.workspace.proj.bin。”
我也尝试使用 -Xbootclasspath/a: 代替追加,但没有区别。
所有核心 java 类都在 bin 文件夹中,具有正确的目录结构(由 eclipse 编译),例如 java/util、java/io 等。
我不知道为什么它抱怨主类,因为 JRE 库没有主类,而我自己的项目主要方法在 bin/core/boot.class 中,由运行中的 eclipse 检测和设置配置(之前运行良好)。
我一直在关注这个指南,它可能有点过时并且没有使用 eclipse 来修补核心类>
http://media.techtarget.com/tss/static/articles/content/CovertJava/Sams-CovertJava-15.pdf
有人能指出我做错了什么吗?
更新/解决方法: 我创建了一个包含所有核心类的新项目,然后将其导出为一个新的 rt.jar 文件,并将其替换为 openjdk 的 jre/lib 文件夹中的默认项目,它就可以工作了。但这意味着我机器上的所有 java 应用程序都将使用修补的类,而不仅仅是我的项目,这远非理想,所以我的上述问题仍然存在。
【问题讨论】: