2015-10-21 86 views
0

我正在嘗試創建一個運行本地修補版本rt.jar的Eclipse項目。就本地而言,我的意思是本地Eclipse項目。 Eclipse項目包含一個名爲runtimes的文件夾,其中包含默認運行時jar的副本。我已經將項目的類路徑設置爲使用這些庫罐而不是系統罐(使用IJavaProject.setRawClasspath)。設置Eclipse項目以使用修補的運行時庫

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 

由於顯然設置類路徑是不夠的,我試過編輯Run Configurations和設置VM參數的一些變化爲如this article所建議的-Xbootclasspath

示例:-Xbootclasspath/p:/Users/.../workspace/Test/runtimes/rt.jar;這似乎對文件資源輸出沒有影響(它始終加載文件的原始實現)。

我也試過-Djava.library.path=/Users/ben/.../Test/runtimes/,但那並沒有改變文件資源。

我想知道它是否與this question有關。

P.S.我知道覆蓋rt.jar文件中的類的應用程序違反了Java SE運行時環境二進制代碼許可證。這不是生產用途,我只是想看看它的工作。

回答

0

好的結果是-Xbootclasspath是我所需要的。我的運行時jar修改導致了一個無效的rt.jar文件,這是我沮喪的根本原因。

回答我自己的問題,以防其他人發現它有用。

enter image description here