ClassLoader#getResource和动态CLASSPATH

时间:2013-11-26 21:45:00

标签: java jar classpath

ClassLoader#getResource()方法是否使用不同的API来加载资源,具体取决于调用它的上下文?特别是,我想知道:当它在JAR上下文中调用时,此方法是否使用ZipFile#open(),并且当它从IDE调用时它是否使用File api(没有打包到JAR)?

我问,因为我有以下问题:在启动JAR文件后,它动态地(在运行时)添加到它自己的位于文件系统上的类路径新目录,当我从IDE运行它时,所有工作正常,但是当我打包我的应用程序时到JAR它停止工作 - 我得到例外:

Caused by: java.io.FileNotFoundException: 
        at java.util.zip.ZipFile.open(Native Method)

所以我认为这是因为JAR上下文中的ClassLoader#getResource()方法始终使用ZipFile类来访问文件和目录,但不应通过{{1}访问动态添加到类路径的目标目录} class(应该使用简单的ZipFile类访问它。)

0 个答案:

没有答案