java为什么有些资源文件放在METAINF目录下 2 周,2 日 Questions & Answers 10548 我想知道为什么一些资源文件被放在JAR的META-INF目录下?我总是把资源像考试一样。根目录下的属性。把它们放在META-INF中有什么好处吗
# 2 楼答案 许多Java(EE)API都有一个约定,当您将特定的配置/元数据文件放入(或第三方)JAR的META-INF文件夹中时,API将自动执行特定于API的工作,例如扫描类、预加载特定类和/或基于元信息执行特定代码 标准JavaSEAPI提供的一个示例是^{}。其中,JDBC4.0兼容驱动程序实现了这一点。这样,只要删除JDBC驱动程序JAR文件夹,就可以在Java应用程序启动/初始化期间自动加载驱动程序类,而无需在代码中使用任何手动Class.forName("com.example.Driver")行 此外,还有JavaEE6提供的JSF2.0API,它在应用程序启动期间扫描所有JAR文件,查找META-INF文件夹中的faces-config.xml文件。如果存在,它将把它作为一个提示,扫描整个JAR文件,寻找实现JSF特定注释(如^{})的类,以便自动实例化和自动配置它们。这节省了扫描整个类路径中所有JAR中数千个类的潜在昂贵工作的时间。在这些API的旧版本中,配置通常由(详细的)XML文件完成 总之,主要目标是将开发人员从代码和/或配置样板中解救出来。JAR的META-INF文件夹用于配置文件/提示。一些API确实也将静态文件/资源放在其中供自己使用。META-INF文件夹也是类路径的一部分,因此类加载器很容易加载这些文件
# 3 楼答案 在Servlet3.0中,某些静态资源可以通过web上下文获得,例如。css、java脚本和。png文件,因此不再需要使用ServletContext getResource()和getResourceAsStream()。有关更多信息,请查看web片段。xml(https://blogs.oracle.com/swchan/entry/servlet_3_0_web_fragment),这是一种涵盖此主题的资源 就我个人而言,我更喜欢按照Maven喜欢的方式构造项目,使用src/main/resources目录作为应用程序类路径的一部分
# 1 楼答案
这只是一个惯例,有些(大多数?)第三方JAR用于查找您提供的文件。对于您自己的类和文件,您可以选择将它们放在您喜欢的地方
# 2 楼答案
许多Java(EE)API都有一个约定,当您将特定的配置/元数据文件放入(或第三方)JAR的
META-INF
文件夹中时,API将自动执行特定于API的工作,例如扫描类、预加载特定类和/或基于元信息执行特定代码标准JavaSEAPI提供的一个示例是^{} 。其中,JDBC4.0兼容驱动程序实现了这一点。这样,只要删除JDBC驱动程序JAR文件夹,就可以在Java应用程序启动/初始化期间自动加载驱动程序类,而无需在代码中使用任何手动
Class.forName("com.example.Driver")
行此外,还有JavaEE6提供的JSF2.0API,它在应用程序启动期间扫描所有JAR文件,查找} )的类,以便自动实例化和自动配置它们。这节省了扫描整个类路径中所有JAR中数千个类的潜在昂贵工作的时间。在这些API的旧版本中,配置通常由(详细的)XML文件完成
META-INF
文件夹中的faces-config.xml
文件。如果存在,它将把它作为一个提示,扫描整个JAR文件,寻找实现JSF特定注释(如^{总之,主要目标是将开发人员从代码和/或配置样板中解救出来。JAR的
META-INF
文件夹用于配置文件/提示。一些API确实也将静态文件/资源放在其中供自己使用。META-INF
文件夹也是类路径的一部分,因此类加载器很容易加载这些文件# 3 楼答案
在Servlet3.0中,某些静态资源可以通过web上下文获得,例如。css、java脚本和。png文件,因此不再需要使用ServletContext getResource()和getResourceAsStream()。有关更多信息,请查看web片段。xml(https://blogs.oracle.com/swchan/entry/servlet_3_0_web_fragment),这是一种涵盖此主题的资源
就我个人而言,我更喜欢按照Maven喜欢的方式构造项目,使用src/main/resources目录作为应用程序类路径的一部分