如何从jar的外部读取jar资源中的文件

我在其类路径中的abc.jar中有一个文件X.json。 abc.jar中有一个readFile方法,它将文件读取为

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

如果我从jar的上下文中运行它,那就读得很好,即abc.jar中某个文件中的main方法

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

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

到部署时,这些资源将成为嵌入式资源 。 在这种情况下,必须通过URL而不是File访问资源。 有关标记的信息页面 ,请参阅构建URL