gpt4 book ai didi

java - getClass().getClassLoader().getResource() 在 OC4J App Server 中不起作用

转载 作者:行者123 更新时间:2023-11-29 06:10:55 25 4
gpt4 key购买 nike

我有以下代码片段,它在 OC4J 的 EJB 代码中不起作用:

String name = getClass().getPackage().getName();
name = name.replace('.','/');
URL url = this.getClass().getClassLoader().getResource(name);
File directory = new File(url.getFile());
System.out.println("url.getFile() : " + url.getFile());

if (directory.exists()) // returns false!, why??
{
System.out.println("directory.exists() : " + directory.exists());

}

输出是:

url.getFile() : /C:/oc4j_extended_101330/j2ee/home/applications/MyEAR/MyEJB.jar!/com/me/a/service/impl/helper/Logger

但是在独立模式下,输出是:

url.getFile() : /D:/eclipse/workspace/MyEJB/build/classes/com/me/a/service/impl/helper/Logger
directory.exists() : true

最佳答案

它不起作用,因为如 URL 所示,它指向 JAR 文件内的一个位置,该位置不是文件系统的现有位置:/C:/oc4j_extended_101330/j2ee/home/applications/MyEAR/MyEJB.jar!/com/me/a/service/impl/helper/Logger 不是现有目录。

您永远不应该依赖从指向文件系统中某个位置的类加载器加载的资源,因为大多数时候,资源都嵌入在 jar 文件中。

关于java - getClass().getClassLoader().getResource() 在 OC4J App Server 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6898528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com