2013-11-23 44 views
1

我在abc.jar的classpath中有一个文件X.json。有一个在abc.jar方法READFILE读取该文件作为如何从ouside jar中读取jar文件中的文件

URL url = Abc.class.getClassLoader().getResource("X.json"); 
File file = new File(url.toURI());* 

其内容是罚款,如果我从玻璃瓶中的IE主要方法范围内的某个文件运行它abc.jar内

但当readFile从其他代码从abc.jar之外调用时,它会失败java.lang.IllegalArgumentException: URI is not hierarchical

如何通过从jar的上下文外调用readFile方法来获取File对象?

+0

你为什么不发布stacktrace? – isnot2bad

+1

文件表示文件系统上的路径。文件夹中的文件不在文件系统中。所以无论你从哪个类执行这个代码,它都没有意义,也不会工作。要读取类路径中的jar文件,使用'Class [Loader] .getResourceAsStream()'。 –

+0

似乎是一样的http://stackoverflow.com/questions/10144210/java-jar-file-use-resource-errors-uri-is-not-hierarchical – jCoder

回答

2

到部署时,这些资源将变为。既然如此,资源必须由URL而不是File访问。有关标签,请参阅info page,以形成URL