Java 将Eclipse项目设置为使用修补的运行时库

Java 将Eclipse项目设置为使用修补的运行时库,java,eclipse,eclipse-plugin,runtime,patch,Java,Eclipse,Eclipse Plugin,Runtime,Patch,我正在尝试创建一个Eclipse项目,该项目运行一个本地补丁版本的rt.jar。所谓本地,我指的是Eclipse项目的本地。Eclipse项目包含一个名为runtimes的文件夹,其中包含默认运行时JAR的副本。我已经将项目的类路径设置为使用这些库jar,而不是使用的系统jar Eclipse项目只有一个测试类 import java.io.File; public class POC { public static void main(String[] args) {

我正在尝试创建一个Eclipse项目,该项目运行一个本地补丁版本的rt.jar。所谓本地,我指的是Eclipse项目的本地。Eclipse项目包含一个名为runtimes的文件夹,其中包含默认运行时JAR的副本。我已经将项目的类路径设置为使用这些库jar,而不是使用的系统jar

Eclipse项目只有一个测试类

import java.io.File;

public class POC {

    public static void main(String[] args) {

        System.out.println("File Resource:");
        ClassLoader loader = POC.class.getClassLoader();
        System.out.println(loader.getResource("java/io/File.class"));

        System.out.println("\nLibrary Path:");
        String librarypath = System.getProperty("java.library.path");
        String[] librarypathEntries = librarypath.split(File.pathSeparator);
        for(String lp : librarypathEntries){
            System.out.println(lp);
        }

        System.out.println("\nClasspath:");
        String classpath = System.getProperty("java.class.path");
        String[] classpathEntries = classpath.split(File.pathSeparator);
        for(String cp : classpathEntries){
            System.out.println(cp);
        }

    }

}
目前,它打印的东西的效果是

File Resource:
jar:file:/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/rt.jar!/java/io/File.class

Library Path:
/Users/ben/Library/Java/Extensions
/Library/Java/Extensions
/Network/Library/Java/Extensions
/System/Library/Java/Extensions
/usr/lib/java
.

Classpath:
/Users/ben/.../workspace/Test/runtimes/resources.jar
/Users/ben/.../workspace/Test/runtimes/rt.jar
/Users/ben/.../workspace/Test/runtimes/jsse.jar
/Users/ben/.../workspace/Test/runtimes/jce.jar
/Users/ben/.../workspace/Test/runtimes/charsets.jar
/Users/ben/.../workspace/Test/runtimes/jfr.jar
/Users/ben/.../workspace/Test/runtimes/JObjC.jar
/Users/ben/.../workspace/Test/runtimes/dnsns.jar
/Users/ben/.../workspace/Test/runtimes/localedata.jar
/Users/ben/.../workspace/Test/runtimes/sunec.jar
/Users/ben/.../workspace/Test/runtimes/sunjce_provider.jar
/Users/ben/.../workspace/Test/runtimes/sunpkcs11.jar
/Users/ben/.../workspace/Test/runtimes/zipfs.jar
/Users/ben/.../workspace/Test/runtimes/MRJToolkit.jar
/Users/ben/.../workspace/Test/bin
因为显然设置类路径是不够的,所以我尝试编辑运行配置,并按照建议为设置VM参数的一些变体

示例:-Xbootclasspath/p:/Users/../workspace/Test/runtimes/rt.jar;这似乎对文件资源输出没有影响—它总是加载文件的原始实现

我还尝试了-Djava.library.path=/Users/ben/../Test/runtimes/,但这也没有改变文件资源

我想知道这是否与我的工作有关

另外,我知道重写rt.jar文件中的类的应用程序违反了Java SE运行时环境二进制代码许可证。这不是生产用的,我只想看到它工作。

好的结果是-Xbootclasspath是我所需要的全部。我的运行时jar修改导致一个无效的rt.jar文件,这是我沮丧的根本原因

回答我自己的问题,以防别人觉得有用