Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Eclipse中创建META-INF/services文件夹_Java_Eclipse_Meta Inf_Service Provider - Fatal编程技术网

Java 在Eclipse中创建META-INF/services文件夹

Java 在Eclipse中创建META-INF/services文件夹,java,eclipse,meta-inf,service-provider,Java,Eclipse,Meta Inf,Service Provider,我试图用Java创建一个可扩展的应用程序,并选择使用SPI。根据下面的内容,我应该在jar中的META-INF/services中创建一个特定的文件,但不知道如何创建。 我知道如何使用META-INF创建jar,但找不到如何创建services文件夹和该文件夹中的特定文件的方法。(我正在使用Eclipse) 谢谢你的帮助 由于教程指示手动创建,而不是使用ant或maven或其他构建工具,因此只需在根级别创建一个名为META-INF的文件夹,其中包含一个名为services的子文件夹和一个名为MA

我试图用Java创建一个可扩展的应用程序,并选择使用SPI。根据下面的内容,我应该在jar中的
META-INF/services
中创建一个特定的文件,但不知道如何创建。 我知道如何使用
META-INF
创建jar,但找不到如何创建
services
文件夹和该文件夹中的特定文件的方法。(我正在使用Eclipse)


谢谢你的帮助

由于教程指示手动创建,而不是使用ant或maven或其他构建工具,因此只需在根级别创建一个名为META-INF的文件夹,其中包含一个名为services的子文件夹和一个名为MANIFEST.MF的文件

我不确定您计划如何执行jar文件,因为现在您可以在
MANIFEST.MF
中放这一行:

Manifest-Version: 1.0
对于服务文件夹,您需要创建一个名为
com.example.dictionary.spi.dictionary
的文件,其中包含教程中提到的以下一行内容:-

com.example.dictionary.GeneralDictionary
FYI-META-INF是一个内部Java元目录。一般来说,您希望依靠您的打包工具(如ant或maven)来构建META-INF文件夹的内容,而不是自己完成

您可以查看META-INF文件夹内容的详细信息:-


假设您正在构建应用程序,您需要添加一个metainf文件集,或者更好地使用如下的服务指令

<jar jarfile="pinky.jar">
  <fileset dir="build/classes"/>
  <service type="javax.script.ScriptEngineFactory"
           provider="org.acme.PinkyLanguage"/>
</jar>
其中包含服务实现的名称

com.mycorp.services.Fooservice

如果您在项目下使用Eclipse的“Runnable JAR file export”生成JAR文件,请选择“另存为ANT脚本”,然后修改ANT脚本,将其打包到上述服务中。

他正在按照教程要求手动创建。好吧,到目前为止,我一直在使用Eclipse中的向导构建jar。@tom-一旦您开始构建企业应用程序,您就会希望使用像
ant
maven
这样的构建工具。不过,使用eclipse构建JAR是可以的,非常感谢。尽管我认为CoolBeans的答案是可以接受的,因为这对我来说比较容易,但你的答案确实有帮助too@tom,如果要使用jar导出器,请使用可运行的jar文件导出,它有一个将导出保存为ant构建文件的选项。保存它,然后编辑到你的心的内容。谢谢,简单,做了job@tom-没问题。欢迎来到堆栈溢出!
jar -uf jarfile.jar META-INF/services/name.of.general.service
com.mycorp.services.Fooservice