使用 getClass().getResource() 加载文件
使用资源文件(如属性文件)时,常见的方法是使用getClass().getResource(path) 来加载它们。但是,与在 Eclipse 等 IDE 中执行代码相比,从命令行执行代码时会出现差异。
Eclipse 中的行为
在 Eclipse 中, getClass().getResource( path) 方法有效地从源文件夹加载文件。如果资源文件(例如 Test.properties)与 Java 文件放在同一个包中,则可以在 Eclipse 中访问它,不会出现任何问题。
命令行部署问题
使用命令行在 Eclipse 外部部署应用程序时,资源文件可能不存在于类路径中。因此, getClass().getResource(path) 将无法加载文件,从而导致空指针异常。
解决方案
要解决此问题,请确保资源文件包含在类路径中。这可以通过将文件放在与已编译的类文件相同的目录中或将其打包到 JAR 文件中来实现。
替代方法
而不是使用 getClass ().getResource(path),考虑使用getClass().getResourceAsStream(path)为资源文件创建一个InputStream。此方法避免了将 URI 转换为文件的需要,并处理从各种来源(例如文件系统、JAR 文件或通过网络)加载的文件。
最后,请注意传递给的参数getClass().getResourceAsStream 方法。使用 Foo.class.getResourceAsStream("Test.properties") 将从与 Foo 相同的包加载文件,而 Foo.class.getResourceAsStream("/com/foo/bar/Test.properties") 将从指定套餐。
以上是如何使用“getClass().getResource()”从命令行加载资源文件?的详细内容。更多信息请关注PHP中文网其他相关文章!