为了满足自己的需要,我修改了一些核心java类。在Java.lang.String匹配方法中为regexps使用缓存。
我希望使用这些修补类,而不是jre附带的rt.jar中的默认类。
我将src.zip源代码导入eclipse中,其中包含了rt.jar中类文件的所有源文件,并根据我的需要对它们进行了更改。然后,我从eclipse库配置中删除了rt.jar,并更改了在eclipse中安装的JRE的默认VM参数选项,以告诉VM使用我自己的自定义核心classes>。
-Xbootclasspath/p: /media/SSD/工作区/proj/bin/
但是,当运行一个简单的测试程序时,VM无法使用following>启动。
“无法找到或加载主类.media.SSD.workspace.proj.bin。”
我还尝试使用-Xbootclasspath/a:来替代,但这并没有什么区别。
所有核心java类都位于bin文件夹中,具有正确的目录结构(由eclipse编译),例如java/util、java/io等。
我不知道为什么它会抱怨主类,因为JRE库没有主类,我自己的项目的主要方法是bin/core/boot.class,它是由eclipse在运行配置中检测和设置的(以前工作得很好)。
我遵循了这个指南,它可能有点过时了,并且没有使用eclipse来修补核心classes>。
http://media.techtarget.com/tss/static/articles/content/CovertJava/Sams-CovertJava-15.pdf
有人能指出我做错了什么吗?
更新/解决办法:我创建了一个包含所有核心类的新项目,然后将其导出为一个新的rt.jar文件,并将其替换为openjdk的jre/lib文件夹中的默认项目。但这意味着我的机器上的所有java应用程序都将使用修补类,而不仅仅是我的项目,这远远不是理想的,所以我上面的问题仍然存在。
发布于 2015-05-28 11:16:35
参数中不应该有空格。
-Xbootclasspath/p:/media/SSD/workspace/proj/bin/引导路径(在:之后)的参数应该是一个(在;上)分隔的文件夹、zip和jars列表。
Java已经将您的参数解释为要在引导路径前面加上的文件夹的空列表和要运行的类的名称,这就是为什么它抱怨找不到类.media.SSD.workspace.proj.bin.的原因。
https://stackoverflow.com/questions/30468535
复制相似问题