设置Eclipse项目以使用修补的运行时库

时间:2015-10-21 05:29:09

标签: java eclipse eclipse-plugin runtime patch

我正在尝试创建一个运行本地修补版rt.jar的Eclipse项目。通过本地,我的意思是Eclipse项目的本地。 Eclipse项目包含一个名为runtimes的文件夹,其中包含默认运行时jar文件的副本。我已经设置项目的类路径来使用这些库jar而不是系统jar(使用IJavaProject.setRawClasspath)。

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

由于显然设置的类路径不够,我尝试按照-Xbootclasspath的建议编辑Run Configurations并为this article设置VM参数的一些变体。

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

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

我想知道它是否与this question有关。

P.S。我知道覆盖rt.jar文件中的类的应用程序违反了Java SE运行时环境二进制代码许可证。这不是用于生产用途,我只是希望看到它正常工作。

1 个答案:

答案 0 :(得分:0)

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

在别人认为有用的情况下回答我自己的问题。

enter image description here