【问题标题】:java eclipse patched JRE classes Xbootclasspath Could not find or load main classjava eclipse 修补了 JRE 类 Xbootclasspath 找不到或加载主类
【发布时间】: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 应用程序都将使用修补的类,而不仅仅是我的项目,这远非理想,所以我的上述问题仍然存在。

【问题讨论】:

    标签: java eclipse


    【解决方案1】:

    参数中不应有空格

    -Xbootclasspath/p:/media/SSD/workspace/proj/bin/
    

    bootclasspath 的参数(在: 之后)应该是;(在 Windows 上)分隔的文件夹 zip 和 jar 列表。

    Java 已将您的参数解释为要添加到 bootclasspath 的空文件夹列表和要运行的类的名称,这就是为什么它抱怨找不到类 .media.SSD.workspace.proj.bin.

    【讨论】:

    • 如何处理带空格的文件夹(重命名除外)?
    • 将整个参数包装在""中。例如"-Xbootclasspath/p:/path/with space".
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2014-03-28
    • 2014-11-18
    • 2016-05-17
    • 2012-05-08
    相关资源
    最近更新 更多