2014-06-11 75 views
0

應用程序有幾個類路徑(其中一些是在運行時添加的)。我想閱讀兩個不同地點的文件。根據情況我必須加載一個特定的文件。所以,我正在考慮優先考慮類路徑。但是,我不知道如何實現?在Java中爲類路徑提供首選項

回答

0

您可以使用ClassLoader

ExampleClass.class.getResourceAsStream("/path/to/file/inside/class.path"); 

如果資源存在的類加載器內多次讀取classpath中的任何文件,第一個遇到的資源將被採取。

+0

是的,這是OP顯然已經知道的。現在的問題是:如果出現類路徑衝突,如何強制某個特定的人獲得偏好。您的答案包含正確的信息,但絕不會回答所問的問題。 – Gimby

0

的ClassLoader的對象可以被映射到相同的資源路徑的list of all resources

Enumeration<URL> resources = Thread.currentThread().getContextClassLoader().getResources("/path/to/file/inside/class.path"); 

的網址應使您能夠找出從JAR文件來源於

注意,這將是更強大的使用Java服務功能:實現一個接口來加載資源,它也返回一個優先級

public interface Loader InputStream getResource(String name); int priority(); }

然後使用ServiceLoader類加載服務加載資源,按照實現返回的優先級數對它們進行排序,然後在它們上依次運行getResource,直到找到資源。