当前位置: 首页 > 知识库问答 >
问题:

类路径中资源的缺失ResourceException

於炯
2023-03-14

我在尝试将资源加载到应用程序的包中时遇到了严重的问题。我已经这样做了几个小时,我真的不知道我做错了什么。

我有一个 Java 应用程序,我正在尝试将国际化应用于我的日志记录。Eclipse中一切正常,只有当我尝试将编译的jars部署到测试环境时,才找不到属性文件。我的属性文件称为logging_en.属性。我已经验证了它在文件系统上(顺便说一句,Linux)。当我启动我的应用程序时,我执行以下命令:

$JAVA_HOME/bin/java -verbose:gc -Xloggc:/var/tmp/app_gc.log -Xms1000m -Xms1000m  -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:NewRatio=3  -classpath $CLASSPATH -Djava.rmi.server.codebase=file:///data/dev/app/common/ext/dirmi-1.1.1.jar -Djava.awt.headless=true -Dcom.sun.management.jmxremote.port=xxx -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false $JAVA_SECURITY $IMPORT_PROPERTIES $APP_PROPERTIES app.serverimpl.ServerStarter

我的类路径变量是:

/data/dev/app/server/logging_en.properties:/data/dev/app/common/lib/common.jar:/data/dev/app/common/ext/dirmi-1.1.1.jar:/data/dev/app/common/ext/log4j-1.2.17.jar:/data/dev/app/common/ext/cojen-2.2.3.jar:/data/dev/app/common/lib/server.jar

属性文件在我的类路径中。在代码本身中,我运行的确切行是:

LogManager.getLogger("server").setResourceBundle(java.util.ResourceBundle.getBundle("logging"));

在服务器启动的最开始,我总是会收到缺失资源异常:

Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name logging, locale en_US

为了安全起见,我已经将文件复制到日志记录。属性和logging_en_US。属性并将这三个属性都添加到类路径中。还是同样的问题。我知道我在做一些愚蠢的事情,或者遗漏了一些显而易见的事情,但我真的很困惑。我不希望将文件捆绑到我的jar中,这样就可以动态地修改它,所以我希望可以从类路径进行修改。

共有1个答案

汝墨一
2023-03-14

对于单个文件,类路径需要包含文件所在的文件夹,而不是实际文件本身的路径。将您的类路径改为如下所示:

/data/dev/app/server/:/data/dev/app/common/lib/common.jar:...

(Jar文件被视为文件夹,正如您在上面看到的)。

需要明确的是-ResourceBundle.getBundle(“日志记录”)调用将在内部执行类似于这样的操作:

ClassLoader.getSystemClassLoader().getResource("logging_en.properties")

当它这样做时,它将在类路径上的文件夹中查找该路径(“logging_en.properties” ) - 这意味着它将在/data/dev/app/服务器中查找,然后在/data/dev/app/common/lib/common.jar文件中查找(它具有其解压缩内容的缓存)等等。(涉及更多的可插拔性,并且并非所有类装入器都必须对应于文件等 - 但在常见情况下,上述情况确实会发生。

 类似资料:
  • 问题内容: 是否有API可以获取类路径资源(例如,我将从中获得的资源)?理想情况下,我想将新的API与类路径资源一起使用。 问题答案: 这对我有用:

  • 是否有API来获取类路径资源(例如,我从)作为获取的类路径资源?理想情况下,我希望使用带有类路径资源的新的API。

  • 上面是我的程序,错误显示为: 可能的问题是什么?请帮忙,因为我是新来的 我面临着同样的问题,我该如何解决?

  • 本文将介绍 Weex 中 uri(url) 的用法。包括使用图像、字体等资源,处理相对路径以及如何访问本地及打包的资源文件。 Schemes 本地资源 Weex SDK 提供 local scheme 来访问打包在应用程序中的资源,此 scheme 无法在 H5 环境下使用。目前,开发者可以在 image 组件和字体文件中使用本地资源。 在 iOS 中,Weex 会在 bundle resourc

  • 我删除了应用程序。属性文件,并包含应用程序。yml而不是它。突然,我开始得到以下FileNotFoundException错误; 我认为这将自然工作,我不需要为此进行任何配置。这里有什么问题?

  • 等等。现在,我已经看到了一些公开路径的web服务API,如或。路径的批准部分似乎更像是问题可能具有的属性(在本例中),我想知道这是否可以,以及使它成为请求参数和路径的一部分之间的界限在哪里? 在web服务中公开以某种方式公开系统中的一个预期资源的路径(如本例中的)是否可以,但除了正常的路径之外,还可以通过类似于的路径公开这些路径?规则是什么,这应该是怎样的? 如果我没有人要问,我会创建一个类似:g